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
であることでした^^これは問題が
'ActiveWorkbook.SaveAs'を' Wbk.SaveAs'に変更してみてください。そうでなければ 'On Error Resume Next'を削除してエラー名と番号を確認してください。 – braX
コードがクラッシュしたときの名前の値は何ですか?名前が有効なファイル名であることを確かめていますか? – sktneer
@braXをWbk.SaveAsに変更しても効果はありません - まだクラッシュしています。 On Error Resume Nextを削除しようとしましたが、エラーは表示されず、クラッシュします。 – TRek