首页 > 解决方案 > 使用字符串变量引用工作簿

问题描述

我正在尝试创建一个代码块,允许人们接收未知工作簿的名称,并从中引用数据。按索引号引用似乎不是一个可行的选择,因为用户通常会同时拿出其他工作簿。未知工作簿已打开,但我需要检索其名称。我正在使用 FileDialog 允许用户选择所需的工作簿,将文件路径保存为字符串,然后使用它来引用工作簿。

当我尝试引用工作簿时,出现下标超出范围错误。直接输入工作簿的名称而不是变量就可以了,但是尝试使用变量却不起作用。我尝试使用引号、无引号和双引号,但错误仍然相同。

这是我的代码。我到底做错了什么?

Sub ObtainExternalWorkbook()

'Declare variables
    Dim filepath As String
    Dim WK As FileDialog
    Set WK = Application.FileDialog(msoFileDialogFilePicker)

'Acquire file name.
  MsgBox ("Please select the desired file to be used.")
        With WK
            .AllowMultiSelect = False
            .Title = "Select the desired file."
            If .Show = False Then
                Exit Sub
            End If
        filepath = .SelectedItems.Item(1)
        End With


'Use file name to activate workbook.
    Workbooks(" & filepath & ").Activate
End Sub

标签: excelvbastring

解决方案


考虑到你说工作簿已经打开,这必须是激活的情况,问题是你的变量filepath。这将返回完整的路径和名称。这篇 SO 帖子为您提供了仅提取文件名和扩展名的功能。

选择文件后尝试通过该函数填充filename变量,然后Workbooks(filename).Activate应该可以工作。


推荐阅读