2017-10-03 22 views
1

Summary.xlsmというファイルxlsmがあります。サマリーファイルには、同じフォルダ内のxlsxファイルのデータが収集されます。サマリーファイルのフォルダには、IEM_######.xlsxという名前の他のExcelファイル(IEM_と6桁の数字)のみが含まれている必要があります。VBA SaveAsクラッシュ

私は偽の名前のファイルを認識し、それに応じて名前を変更するマクロを作成しようとしました。マクロは名前を変更したブックの名前を変更して保存しますが、いわゆる「死の白いスクリーン」が常に発生し、Excelを終了する必要があります。マクロを段階的に実行し、SaveASメソッドが原因と思われます。

ここで問題のあるコードです:

Sub Rename() 

With Application 
    .ScreenUpdating = False 
End With 

Dim FilesInPath As String, MyPath As String, MyFiles() As String, File As String, Number As String 
Dim i As Long 
Dim Wbk As Workbook 

MyPath = Application.ThisWorkbook.Path + "\" 

FilesInPath = Dir(MyPath) 

FNum = 0 
Do While FilesInPath <> "" 
    FNum = FNum + 1 
    ReDim Preserve MyFiles(1 To FNum) 
    MyFiles(FNum) = FilesInPath 
    FilesInPath = Dir() 
Loop 

MsgBox (FNum & " files were found.") 

For i = 1 To FNum 
    File = MyPath & MyFiles(i) 
    On Error Resume Next 
    Set Wbk = Workbooks.Open(File) 
    Workbooks(MyFiles(i)).Activate 
    If Not ((ActiveWorkbook.Name Like "IEM_######.xl*") Or (ActiveWorkbook.Name Like "Summary.xlsm")) Then 
     Number = Worksheets("Time allocation").Range("B7") 
     Name = "IEM_" & Number & ".xlsx" 
     ActiveWorkbook.SaveAs MyPath & Name 
    End If 
    Call Wbk.Close(True) 
Next 

End Sub 

任意のアイデア何を行うことができますか?それは同様Summary.xlsmを閉じて(マクロを含む)と「クラッシュ」は実際にちょうど概要エクセル

を閉じるマクロですので、犯人が実際Call Wbk.Closeであることでした^^これは問題が

+0

'ActiveWorkbook.SaveAs'を' Wbk.SaveAs'に変更してみてください。そうでなければ 'On Error Resume Next'を削除してエラー名と番号を確認してください。 – braX

+1

コードがクラッシュしたときの名前の値は何ですか?名前が有効なファイル名であることを確かめていますか? – sktneer

+0

@braXをWbk.SaveAsに変更しても効果はありません - まだクラッシュしています。 On Error Resume Nextを削除しようとしましたが、エラーは表示されず、クラッシュします。 – TRek

答えて

0

ました - マクロはうまくいきました!

関連する問題