我正在尝试创建一个代码块,以使该代码块可以接收未知工作簿的名称并从中引用数据。通过索引号进行引用似乎不是一个可行的选择,因为用户经常会同时出其他工作簿。未知的工作簿已经打开,但是我需要检索其名称。我正在使用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
答案 0 :(得分:1)
考虑到您说工作簿已经打开,必须激活该情况,问题出在您的变量filepath
上。这将返回完整的路径和名称。 This SO post为您提供了仅提取文件名和扩展名的功能。
在选择文件后尝试通过该函数填充filename
变量,然后Workbooks(filename).Activate
应该可以工作。