VBA(Visual Basic for Applications)を使ってExcelファイルを加工し、特定の場所に保存する方法についての解説です。ここでは、デスクトップ上に保存する方法と、ファイル名に処理時刻を追加する方法について説明します。
1. VBAコードを使用してファイルを上書き保存する方法
まず、VBAを使用して特定のファイルを開き、必要な処理を行った後、デスクトップに上書き保存する方法を確認しましょう。基本的には、ファイルを開いて加工を行い、上書き保存するという流れになります。
以下のVBAコードでは、「加工.xlsm」を開き、その後「献立表.xlsx」を非表示で加工し、最終的に加工されたファイルをデスクトップに保存します。
Sub sumple()
Dim menuBook As String: menuBook = "C:\Users\○○\Downloads\献立表.xlsx"
If Dir(menuBook) = "" Then
MsgBox menuBook & " がありません", vbExclamation
Exit Sub
End If
Application.ScreenUpdating = False
With Workbooks.Open(menuBook)
.Worksheets("献立表").Range("J:L,AC:AE,AV:AX").Delete
.Worksheets("献立表").Range("D:F,T:V,AJ:AL").Insert
.Close True
End With
MsgBox "処理が完了しました!"
End Sub
2. 処理時刻をファイル名に追加する方法
次に、処理時刻(YYYYMMDDHHMM形式)をファイル名に追加する方法です。この方法により、ファイル名に日付と時刻を組み込むことができます。
以下のコードでは、ファイル名に現在の日付と時刻を追加して保存しています。
Sub saveWithTimestamp()
Dim menuBook As String: menuBook = "C:\Users\○○\Downloads\献立表.xlsx"
If Dir(menuBook) = "" Then
MsgBox menuBook & " がありません", vbExclamation
Exit Sub
End If
Dim currentTime As String
currentTime = Format(Now, "yyyyMMddhhmm")
Dim savePath As String
savePath = "C:\Users\○○\Desktop\献立表(加工済み)_" & currentTime & ".xlsx"
Application.ScreenUpdating = False
With Workbooks.Open(menuBook)
.Worksheets("献立表").Range("J:L,AC:AE,AV:AX").Delete
.Worksheets("献立表").Range("D:F,T:V,AJ:AL").Insert
.SaveAs Filename:=savePath
.Close True
End With
MsgBox "処理が完了しました!"
End Sub
3. タイムスタンプを正しくフォーマットする
処理時刻を正しく取得し、ファイル名に組み込むためには、VBAのFormat関数を使用します。この関数を使うことで、現在の日付と時刻を指定した形式(YYYYMMDDHHMM)で取得できます。
コード内のFormat(Now, "yyyyMMddhhmm")は、現在の日付と時刻を年、月、日、時、分の形式で表示し、それをファイル名に組み込んでいます。
4. 上書き保存とファイル名のリネーム
このコードを使用すると、元々あった「献立表.xlsx」をデスクトップに上書き保存することができます。また、ファイル名に処理時刻が追加されるため、同じファイル名で保存しても、ファイル名が重複しません。
もし処理が完了した後に確認したい場合は、指定したパスに保存されたファイルを確認してください。
5. まとめ
VBAを使ってExcelファイルを加工し、デスクトップに上書き保存する方法は、SaveAsメソッドを使用することで簡単に実現できます。さらに、ファイル名に処理時刻を追加することで、保存するたびにユニークなファイル名を作成することができます。今回のコード例を参考に、適切に処理を実行し、効率的にファイル管理を行いましょう。


コメント