For n = 0 to PathList.GetUpperBound(0)
每当我尝试运行此宏时,行 PathList
都会抛出一个“编译错误(无效的限定符)。具体来说,它突出显示PathList(n)
是问题。
此外,如果我切出循环并且只运行一次内容(用 "\data\WeaponInfo.csv"
替换SourceList(0) = ActiveWorkbook
),它会抛出“对象变量或带有块”变量未在SourceList(n).Close
行设置“错误。我做错了什么?
我知道循环目前毫无意义;因为我将使用这个宏来打开多个数据引用,所以它将来会有所改进。
编辑:下面是@Jeremy建议的更改,现在Dim SourceList(1) As Workbook
行上的“对象变量或未设置块变量”错误。
EDIT2:再次根据@Jeremy的建议修改了循环,将Dim SourceList(0) As Workbook
更改为{{1}}
答案 0 :(得分:3)
有几个问题:
在VBA中,GetUpperBound方法不存在,仅适用于.NET。将其更改为Ubound功能。
您可能遇到Sourcelist(0)= ActiveWorkbook的问题。在分配对象引用时使用Set关键字。
您的循环中未定义来源。始终将Option Explicit放在代码模块的顶部以强制您声明变量。它将在未来挽救痛苦。
你想分割那个字符串是做什么的?你将得到一个值,这是你传入的字符串。
Private Sub Workbook_Open()
Dim SourceList(1) As Workbook
Dim PathList() As String
Dim n as Integer
PathList = Split("\data\WeaponInfo.csv", ",")
ThisWorkbook.Activate
Application.ActiveWindow.Visible = False
Application.ScreenUpdating = False
For n = 0 To Ubound(PathList)
Workbooks.Open Filename:=ThisWorkbook.Path & PathList(n)
Set SourceList(0) = ActiveWorkbook
Next
ActiveWindow.Visible = False
Application.ScreenUpdating = True
Workbooks.Open Filename:=ThisWorkbook.Path & "\HeroForge Anew 3.5 v7.4.0.1.xlsm", UpdateLinks:=3
ActiveWindow.Visible = True
For Each Source In SourceList
Source.Close
Next
End Sub