excel 2016 VBA星号通配符导致1004应用程序定义或对象定义错误

时间:2017-02-22 15:20:25

标签: excel vba excel-vba 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

1 个答案:

答案 0 :(得分:2)

我认为反斜杠模糊导致了这里的问题。

我建议删除它,如果它在那里,然后手动添加代码需要它:

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