2017-02-22 22 views
1

アスタリスクのワイルドカードのためにコードが特別に機能しなくなるようにExcelで突然変更されたものを突き止めようとしています。データファイル(.xlsと。xlsx)を以下に示すコードを含む空のファイルに結合するために、このコードをフロントエンドとして使用しました。これはうまく動作し、問題なく何度も使用されました。ファイル自体とコードは、数週間前にExcel 2016で実行されました。excel 2016 VBAアスタリスクワイルドカードが原因で1004アプリケーションが定義されているかオブジェクト定義エラー

実行時に"実行時エラー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 
+0

は 'SPATH&「\」&「* .xlの*」' – CallumDA

+0

使用は 'セットを試しますwBk = Workbooks.Open(sPath& "\"&MyFile) ' – user3598756

+0

' sPath'にバックスラッシュ文字が含まれていないことを確認しましたか? – JiheL

答えて

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 
関連する問題