久しぶりのエクセル備忘録の話でも。
マクロのファイルを普通のエクセル形式にして出力する案件があった。いちいち、ファイル名を書き換えたりするのは面倒だったので、ChatGPTにつくってもらった。
要件としては、
① このファイルをエクセルに出力する。出力先は\\***.**¥である。
② ファイル名は、シート名「PT」のセル「G3」を参照にして、たとえばG3のセルが2024/04/16であれば、これをテキストにして20240416と頭につけて、20240416****.xlsxとする。マクロの機能は無効にしてもらっても構わないです。
③ 同一のファイル名があれば、即座に上書きしてもらって構わない。
という条件でつくってもらった。
さらに、これを開くとシートが3つあり、希望するシート「PT」(ピボットテーブルの意味)が表面に開くよう、シートを一番左に移動してもらった。
できたのが、こちら。昔はマクロは非常に難しいところとされていたが、いまでは、とても簡単なのである。
Sub エクセルを出力する()
Dim wb As Workbook
Dim ws As Worksheet
Dim fileName As String
Dim outputPath As String
' 出力先パス
outputPath = "\\******\******\"
' ファイル名の作成
fileName = Format(Sheets("PT").Range("G3").Value, "YYYYMMDD") & "****.xlsx"
' 新しいブックを作成
Set wb = Workbooks.Add
' すべてのシートをコピーして貼り付け
For Each ws In ThisWorkbook.Sheets
ws.Copy After:=wb.Sheets(wb.Sheets.Count)
Next ws
' シート1の削除
Application.DisplayAlerts = False
wb.Sheets(1).Delete
Application.DisplayAlerts = True
' PTシートを一番左に移動
wb.Sheets("PT").Move Before:=wb.Sheets(1)
' ファイルが存在する場合は即座に上書き
On Error Resume Next
Kill outputPath & fileName
On Error GoTo 0
' ファイルを保存
wb.SaveAs outputPath & fileName
' ブックを閉じる
wb.Close SaveChanges:=True
' 終了メッセージの表示
MsgBox "ファイルが出力されました。"
End Sub