2016-08-26 5 views
-1

workbooks.openを使用してファイルを検索する際に問題が発生しました。マクロが実行されると、実行時エラー "1004"が表示されます。実際、私はこれをYouTubeから学びます。 問題は何ですか?workbook.open問題マクロExcel

このコードは、実際に複数のExcelファイルを1つのフォルダに配置しています。見つからない

Sub checkcopy() 

Dim cf As String 
Dim erow 

cf = Dir("C:\Supplier\") 

Do While Len(cf) > 0 
MsgBox ("Check") 
If cf = "SummaryCheckFile.xlsm" Then 
Exit Sub 
End If 

MsgBox ("Check 1") 

Workbooks.Open (cf) 
Range("A1:E1").Copy 
ActiveWorkbook.Close 

erow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 
ActiveSheet.Paste Destination:=Worksheets("Sheet1").Range(Cells(erow, 1), Cells(erow, 4)) 
checkFile = Dir 

Loop 

End Sub 

申し訳ありませんが、

そのショー

'go.xls' が見つかり。ファイル名のスペルを確認し、ファイルの場所が正しいことを確認します。 あなたが確認して、主に最近使用したファイルのリストからファイルを開こうとしている場合は.....

+0

*それはあなたがそのランタイムエラーが何であるかを教えない限り、何を意味する*ショーのランタイムエラーです - あなたは右のあなたの前にあなたの画面上でそれを持って、そしてあなたがそれを含めるに失敗するために言い訳は絶対にありませんあなたの質問。あなたがそれを追加するために[編集]をしている間、あなたの質問のタイトルを修正して問題を説明してください。 * Macro *と* Excel *(どちらも既にタグに入っています)を削除すると、残っているものは* workbook open problems *が役に立たなくなります。あなたのタイトルには、将来のユーザーが検索結果に表示されたときに役立つ方法で質問している特定の問題について説明する必要があります。 –

答えて

0

Dir()は、ファイル名のみを返します - それはパスが含まれていないので、あなたはWorkbooks.Open()

を呼び出すときには、それらの両方を指定する必要があります。また、あなたのループは決して終了(最初のファイルは、「SummaryCheckFile.xlsm」でない限り、 )Dir()への他のすべての呼び出しはcheckFileに戻り値を割り当てるため、cfは決してクリアされません。

Sub checkcopy() 

    Const FLDR As String = "C:\Supplier\" 
    Const EXCLUDE_FILE As String = "SummaryCheckFile.xlsm" 

    Dim cf As String, c As Range, wb As Workbook 

    'set the first copy destination 
    Set c = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 

    cf = Dir(FLDR & "*.xls*", vbNormal) 'only Excel files 

    Do While Len(cf) > 0 

     Debug.Print cf 

     'opening this file ? 
     If UCase(cf) <> UCase(EXCLUDE_FILE) Then 

      Set wb = Workbooks.Open(FLDR & cf, ReadOnly:=True) 
      wb.Sheets(1).Range("A1:E1").Copy c 'assumes copying from the first sheet 
      Set c = c.Offset(1, 0)    'next destination row 
      wb.Close False 

     End If 

     cf = Dir 'next file 
    Loop 

End Sub 
0

ではなくcf = "filename.xlsm"よりも、たとえばcf = "c:\XXX\filename.xlsm"ため、cfのパスを与えるようにしてください。

0

マクロが含まれてXLSMを開き、ランタイムエラーや無応答を引き起こしたときに、パラメータCorruptLoadで動作するようにしてください。

Application.DisplayAlerts = False 
Workbooks.Open ("enter your file path here"), CorruptLoad:=xlExtractData 
Application.DisplayAlerts = True