循环代码错误Excel表示它可以';我找不到文件
我正在尝试编写一个代码来刷新文件夹中以“FY”开头的所有工作簿。使用当前代码,前两个工作簿会刷新,但当涉及到第三个工作簿时,会出现以下错误: 很抱歉,我们找不到FY20 11-15.xlsm\FY20 1-5.xlsm。是否可能已将其移动、重命名或删除?” 工作簿的路径是“C:\Documents\Database\Sales” 代码如下:循环代码错误Excel表示它可以';我找不到文件,excel,vba,Excel,Vba,我正在尝试编写一个代码来刷新文件夹中以“FY”开头的所有工作簿。使用当前代码,前两个工作簿会刷新,但当涉及到第三个工作簿时,会出现以下错误: 很抱歉,我们找不到FY20 11-15.xlsm\FY20 1-5.xlsm。是否可能已将其移动、重命名或删除?” 工作簿的路径是“C:\Documents\Database\Sales” 代码如下: 子刷新数据() 将文件设置为字符串 把书当作线 file=Application.ThisWorkbook.Path book=Dir(文件&“\FY*.x
子刷新数据()
将文件设置为字符串
把书当作线
file=Application.ThisWorkbook.Path
book=Dir(文件&“\FY*.xlsm”)
文件“”时执行此操作
将wb设置为工作簿
设置wb=Workbooks.Open(文件&“\”&book)
呼叫刷新
wb.Close savechanges:=真
file=Dir
环
端接头
您没有清楚地命名变量,并且文件实际上包含一个路径file=Application。ThisWorkbook.path
因此您混淆了所有内容。让变量名更有意义!确保变量的名称与它们包含的内容一致,否则会让您感到困惑
Sub refreshdata()
Dim Path As String
Path = Application.ThisWorkbook.Path
Dim FileName As String
FileName = Dir(Path & "\FY*.xlsm")
Do While FileName <> vbNullString
Dim wb As Workbook
Set wb = Workbooks.Open(Path & "\" & FileName)
Call Refresh
wb.Close SaveChanges:=True
FileName = Dir
Loop
End Sub
子刷新数据()
将路径设置为字符串
Path=Application.ThisWorkbook.Path
将文件名设置为字符串
FileName=Dir(路径&“\FY*.xlsm”)
当文件名为vbNullString时执行
将wb设置为工作簿
设置wb=Workbooks.Open(路径和“\”文件名)
呼叫刷新
wb.Close SaveChanges:=真
FileName=Dir
环
端接头
怎么了?
在这里file=Dir
设置file
变量,该变量实际上是文件名的路径。在循环的下一次迭代中set wb=Workbooks.Open(file&“\”&book)
是文件名的两倍,新文件名在文件中,旧文件名在书籍中,这是因为最初变量文件
是文件夹路径,然后它变成了文件名。使用两个不同的变量-例如,sPath
和sFilename
只需替换文件名即可“
withDo While book”“
和file=Dir
withbook=Dir
这不只是一个问题。打开(book)时,“book”已经是完整的字符串变量。@daveExcel否,Dir(…)
只返回文件名book=Dir(file&“\FY*.xlsm”)
在路径file
中查找与FY*.xlsm
匹配的第一个文件名,并仅返回文件名。@Pᴇ是的,file&“\”book
只是复制了目录,这就是我要说的。