その他

全パターン網羅:マクロ実行で実行ファイルのシートを.xlsxの拡張子で新しく作成・保存する[No83]

投稿日:

スポンサーリンク

VBAでマクロを実行したファイルを拡張子xlsxに変換し(正確には別名に変更し)、保存するプログラムの紹介です。途中でシートの複製、コピーします。

紹介のプログラムを実行すると別名で保存し、保存したxlsxファイルは閉じます。コメント分を参考にコメントの付けたり外したりしてください!

プログラムの特徴としては、マクロ実行後起動元VBAファイルは閉じないで開っきぱなしというパターンもあるところです。


Option Explicit

Sub ConvertToXlsxAndSave()

    Dim newFileName As String
    '同名のファイルに上書きする場合
    'newFileName = "tempList.xlsx"

    '別名のファイルとして保存する場合
    newFileName = "tempList" & "_" & Format(Now, "yyyymmdd_hhmmss_ms") & ".xlsx"

    Dim newFilePath As String
    newFilePath = ThisWorkbook.Path & "\" & newFileName

    Application.DisplayAlerts = False

    '実行元のマクロファイルは処理完了後も開いて痛い場合はいずれかをコメントアウト
    'そうではなく処理後、マクロファイルは閉じた状態にしたければ全てコメント
    '▼▼▼
    'Copy
    'https://docs.microsoft.com/ja-jp/office/vba/api/excel.worksheets.copy
    'https://docs.microsoft.com/ja-jp/office/vba/api/excel.sheets.copy
    'Before:左側 After:右側
    
    '〇全シートを新しいシートにコピー
    Worksheets.Copy
    'Sheets.Copy
    
    '〇アクティブなシートを新しいシートにコピー
    'ActiveSheet.Copy
    
    '〇指定したシートを新しいシートにコピー
    'Worksheets("Sheet1").Copy 'シート名指定
    'Worksheets(1).Copy '先頭
    'Worksheets(Sheets.Count).Copy 'シート数=後尾
    'Sheets("Sheet1").Copy 'シート名指定
    'Sheets(1).Copy '先頭
    'Sheets(Sheets.Count).Copy 'シート数=後尾
    
    '〇全シートを指定したシートのところにコピー
    'Sheets.Copy Before:=Sheets("Sheet1") 'シート名指定
    'Sheets.Copy Before:=Sheets(1) '先頭
    'Sheets.Copy After:=Sheets("Sheet1") 'シート名指定
    'Sheets.Copy After:=Sheets(Sheets.Count) 'シート数=後尾
    
    '〇アクティブなシートを指定したシートのところにコピー
    'ActiveSheet.Copy Before:=Worksheets("Sheet1") 'シート名指定
    'ActiveSheet.Copy Before:=Worksheets(1) '先頭
    'ActiveSheet.Copy After:=Worksheets("Sheet1") 'シート名指定
    'ActiveSheet.Copy After:=Worksheets(Sheets.Count) 'シート数=後尾

    '〇指定したシートを指定したところにコピー
    'Worksheets("Sheet1").Copy Before:=Worksheets("Sheet1") 'シート名指定
    'Worksheets("Sheet1").Copy Before:=Worksheets(1) '先頭
    'Worksheets("Sheet1").Copy After:=Worksheets("Sheet1") 'シート名指定
    'Worksheets("Sheet1").Copy After:=Worksheets(Sheets.Count) 'シート数=後尾
    'Sheets("Sheet1").Copy Before:=Sheets("Sheet1") 'シート名指定
    'Sheets("Sheet1").Copy Before:=Sheets(1) '先頭
    'Sheets("Sheet1").Copy After:=Sheets("Sheet1") 'シート名指定
    'Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) 'シート数=後尾
    '▲▲▲

    ActiveWorkbook.SaveAs fileName:=newFilePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    
    'アクティブなExcelを閉じる
    'ActiveWorkbook.Close
    
    '指定したExcelを閉じる
    'https://docs.microsoft.com/ja-jp/office/vba/api/excel.workbook.close
    Workbooks(newFileName).Close
    
    '指定したExcelを開く
    'Workbooks.Open fileName:=newFilePath
    
    '指定したExcelをアクティブにする
    'Windows(newFileName).Activate
    
    Application.DisplayAlerts = True
    
End Sub

最後までお付き合いいただきありがとうございます!

この情報が誰かの役にたてれば幸いです。

スポンサーリンク

タグ

-その他

© 2021 BookALittle