我正在VBA中使用一些代码从目录中打开工作簿:
Application.ScreenUpdating = False
Dim StrFile As String
Dim src As Workbook
Dim books As Object
Set today = CreateObject("scripting.dictionary")
Set books = CreateObject("scripting.dictionary")
StrFile = Dir("C:\Users\userA\Documents\XXX\scripts" & "\*" & ".xlsm")
Do While Len(StrFile) > 0
MsgBox (StrFile)
Set src = Workbooks.Open(StrFile, True, True)
Call createInput
src.Close SaveChanges:=False
StrFile = Dir
Loop
现在,这将找到我的工作簿并在MsgBox中打印出名称,但是当调用下面的行时,我收到运行时1004错误(找不到,“它是否可能被移动,重命名或删除了?”
Set src = Workbooks.Open(StrFile, True, True)
我不知道这怎么可能,因为它清楚地表明该文件存在。谁能指导我哪里出问题了?
感谢您的帮助。
答案 0 :(得分:1)
您错过了路。 Dir仅返回文件名,因此除非“ C:\ Users \ userA \ Documents \ XXX \ scripts \”刚好是默认路径,否则工作簿将丢失。
dim fp as string
fp = "C:\Users\userA\Documents\XXX\scripts\"
StrFile = Dir(fp & "*.xlsm")
Do While Len(StrFile) > 0
MsgBox (StrFile)
Set src = Workbooks.Open(fp & StrFile, True, True)
Call createInput
src.Close SaveChanges:=False
StrFile = Dir
Loop
您可能想研究使用environ("USERPROFILE")
来构造包含您的路径的字符串。例如:
fp = environ("USERPROFILE") & "\Documents\XXX\scripts\"