VBAのコードでつまずいています。 100ファイルほど,.xlsmファイルを.xlsxファイルに変換したく。

Visual Basic | Excel94閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

0

ThanksImg質問者からのお礼コメント

遅くなりすみません。 1番簡単な解決方法を頂いたtakaさんを選ばせて貰いました。 有難うございました!

お礼日時:9/15 22:55

その他の回答(3件)

0

下記コードを試してください。 ↓Excel_bookから、末尾の ".xlsm"を除いた文字列を格納 w = Left(Excel_book, Len(Excel_book) - 5) Sub Excel_fileformat_change() Dim Folder_path As String Dim Excel_book As String Dim w As String Folder_path = "C:\Users\Desktop\マクロファイル" Excel_book = Dir(Folder_path & "\*.xlsm") Application.ScreenUpdating = False Do Until Excel_book = "" Workbooks.Open Folder_path & "\" & Excel_book Application.DisplayAlerts = False w = Left(Excel_book, Len(Excel_book) - 5) With ActiveWorkbook .SaveAs Folder_path & "\" & w, xlOpenXMLWorkbook .Close End With Application.DisplayAlerts = False Excel_book = Dir() Loop Application.ScreenUpdating = True MsgBox "完了" End Sub

0

2カ所変更。 1) Sub Excel_fileformat_change() 'フォルダの場所を変数に入れる Dim Folder_path ↓ Sub Excel_fileformat_change() Dim FSO Set FSO = CreateObject("Scripting.FileSystemObject") 'フォルダの場所を変数に入れる Dim Folder_path 2) ActiveWorkbook.SaveAs Filename:=Excel_book & "x", FileFormat:=xlOpenXMLWorkbook ↓ ActiveWorkbook.SaveAs Filename:=FSO.GetBaseName(Excel_book) & ".xlsx", _ FileFormat:=xlOpenXMLWorkbook あと本題とは関係ないですが、 If LCase(Right(Excel_book, 4)) = "xlsm" Then とこのIf文と対応する End Ifは不要でしょう。 要件は、Excel_book = Dir(Folder_path & "\*.xlsm*") で満たされてます。 ただ、 Dir(Folder_path & "\*.xlsm*") は Dir(Folder_path & "\*.xlsm") と書いたほうがいいですね。