excel 2016 VBA星号通配符导致1004应用程序定义或对象定义错误
我正试图弄清楚excel中突然发生了什么变化,使我的代码因为星号通配符而停止工作。我将此代码作为前端,将数据文件(包括.xls和xlsx)合并到包含以下代码的空白文件中。这是工作良好,使用多次没有问题。文件本身和代码几周前在Excel 2016上完成 现在当它运行时,我收到了“运行时错误1004应用程序定义或对象定义错误”,我不知道为什么。我修改了每一行的文本,我很确定是“.xl”导致了错误 我用一个目标文件夹中的实际文件名替换了“.xl”,它没有问题。为什么使用星号会突然导致此错误 以前有人碰到过这个吗?我到处找,找不到任何人报告完全相同的事情。这是我一直在用的东西,同样,它已经好几个星期了excel 2016 VBA星号通配符导致1004应用程序定义或对象定义错误,vba,excel,excel-2016,Vba,Excel,Excel 2016,我正试图弄清楚excel中突然发生了什么变化,使我的代码因为星号通配符而停止工作。我将此代码作为前端,将数据文件(包括.xls和xlsx)合并到包含以下代码的空白文件中。这是工作良好,使用多次没有问题。文件本身和代码几周前在Excel 2016上完成 现在当它运行时,我收到了“运行时错误1004应用程序定义或对象定义错误”,我不知道为什么。我修改了每一行的文本,我很确定是“.xl”导致了错误 我用一个目标文件夹中的实际文件名替换了“.xl”,它没有问题。为什么使用星号会突然导致此错误 以前有人碰
Sub MergeDataFiles()
Dim sPath As String
Dim MyFile As String
Dim wBk As Workbook
sPath = InputBox("Paste File Path Here")
MyFile = Dir(sPath & "\*.xl*")
Application.EnableEvents = False
Application.ScreenUpdating = False
Do While Len(MyFile) > 0
Set wBk = Workbooks.Open(sPath & MyFile)
wBk.Sheets(1).Copy After:=ThisWorkbook.Sheets(1)
wBk.Close True
MyFile = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
我认为反斜杠的模糊性导致了这里的问题 我建议删除它(如果存在),然后在代码需要的地方手动添加它:
Sub MergeDataFiles()
Dim sPath As String
Dim MyFile As String
Dim wBk As Workbook
sPath = InputBox("Paste File Path Here")
If Right(sPath, 1) = "\" Then sPath = Left(sPath, Len(sPath) - 1) ' strip away last backslash if present
MyFile = Dir(sPath & "\*.xl*")
Application.EnableEvents = False
Application.ScreenUpdating = False
Do While Len(MyFile) > 0
Set wBk = Workbooks.Open(sPath & "\" & MyFile) ' include backslash to keep full path correct
wBk.Sheets(1).Copy After:=ThisWorkbook.Sheets(1)
wBk.Close True
MyFile = Dir()
Loop
ActiveWorkbook.Save
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
尝试使用
sPath&“\”&“*.xl*”
使用Set wBk=Workbooks.Open(sPath&“\”&MyFile)
是否确保您的sPath
尚未包含反斜杠字符?请使用调试器逐步执行。抛出错误时,MyFile
的值是多少?您所在的工作簿(即xlsm文件)是否与其他工作簿位于同一目录中?如果是,则当您的代码尝试打开已打开的文件时,它将崩溃;如果代码成功,则当它到达下一个文件并尝试在(现在已关闭)此工作簿的工作表(1)
之后复制工作表时,它肯定会死机。