如何使用VBA中的工作簿名称激活打开的工作簿

lak*_*esh 4 excel vba excel-vba

我已经打开了一个工作簿,但我正在运行另一个工作簿中的宏.我想使用它的名称激活第一个工作簿.

代码:

FileName = input_path_1 & input_file_1
Workbooks(FileName.xls).Activate
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,它给了我"下标超出范围"错误.我该如何解决?

L42*_*L42 6

检查您的变量是否Filename包含正确的文件名.(如Sample.xls)
同时检查input_path_1input_file_1有正确的价值观.
如果他们有它应该是这样的:

Workbooks(Filename).Activate
Run Code Online (Sandbox Code Playgroud)

现在,如果你需要附加扩展名(例如,Filename值只是Sample):

Workbooks(Filename & ".xls").Activate
Run Code Online (Sandbox Code Playgroud)

参数应始终采用字符串形式,并且应该是完整的文件名(带扩展名).虽然也接受数字(索引),但您无法确定哪个索引引用了哪个工作簿.更好的是,将其分配给变量.

Dim otherWB As Workbook
Set otherWB = Workbooks(Filename)
'Set otherWB = Workbooks(Filename & ".xls") '~~> for second scenario above
Run Code Online (Sandbox Code Playgroud)

Edit1:从评论中,如果Filename包含完整路径,那么这可能会起作用.

Dim Filename1 As String
Filename1 = Split(Filename, "\")(UBound(Split(Filename, "\")))
Workbooks(Filename1).Activate
Run Code Online (Sandbox Code Playgroud)

  • @lakesh 2003年没问题.问题可能是这样:`因为我用它来打开文件`如果用它来打开文件,那么字符串包含完整路径(例如*C:\ User\User.Name \文件夹\ Sample.xls*).您只需要*Sample.xls*部分. (2认同)