その他

全パターン網羅:マクロ実行で実行ファイルのシートを.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

雑記

先日、ようやく新型コロナウイルスのワクチン接種が国内でも始まりました。

アメリカの製薬大手ファイザーが日本国内での使用に向けて承認を求める申請をしていたのが去年の12月なので、有効性や安全性などを審査して発症予防効果が期待できると認められるまで、およそ2ヶ月かかったことになります。

更に、摂取開始とは言うものの、まだ全国の国立病院など100ヶ所の医師や看護師ら約4万人が先行接種の対象であるだけで、私たち一般の国民が接種できるのは先のようです。

ワクチンを作るって、こんなに時間がかかるものなんだなと改めて実感しました。

私たちは今までも様々な場面で、医療技術の進歩に助けられて生きてきたと思います。コロナ禍で辛いことや大変なことはみんなそれぞれあると思いますが、今回のワクチン接種開始を1つの希望の光として、前向きにコロナと戦っていけたらいいですね。

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

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

スポンサーリンク

-その他