excel - 使用字符串变量引用工作簿
问题描述
我正在尝试创建一个代码块,允许人们接收未知工作簿的名称,并从中引用数据。按索引号引用似乎不是一个可行的选择,因为用户通常会同时拿出其他工作簿。未知工作簿已打开,但我需要检索其名称。我正在使用 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
解决方案
考虑到你说工作簿已经打开,这必须是激活的情况,问题是你的变量filepath
。这将返回完整的路径和名称。这篇 SO 帖子为您提供了仅提取文件名和扩展名的功能。
选择文件后尝试通过该函数填充filename
变量,然后Workbooks(filename).Activate
应该可以工作。
推荐阅读
- angular - 如何在角度 5 中绑定“数据目标”的值
- python-3.x - 使用带有 urllib 的代理时遇到问题
- spring - 如何禁用 jasypt 对单个组件的自动属性解密?
- html - SVG背景图像没有跨浏览器水平拉伸
- azure - CosmosDB 是否具有会话一致性保证排序
- javascript - 比较两个未知格式的日期
- unity3d - 带有过渡的动画不在统一场景中开始
- linux - 如何在linux中增加文件描述符的大小
- openiddict - openiddict asp.net 核心 OpenIdConnectRequest 参数
- python - 如果socketIO实例是类成员变量,如何用flask-socketio装饰类函数?