MENU

【VBA】ファイルを保存する方法|Save・SaveAsメソッドの使い方】

エクセルでマクロを使って作業を自動化していると、定期的にファイルを保存する必要がある場面があります。この記事では、VBAを使ってエクセルファイルを保存する方法について解説します。基本的な保存方法から、条件に応じた保存方法までを網羅しています。

目次

ファイルを保存する方法

VBAでファイルを上書き保存する方法(Saveメソッド)

エクセルファイルを保存する最も簡単な方法は、Save メソッドを使用することです。このメソッドは、現在のワークブックを上書き保存します。

基本構文

WorkbookObject.Save
  • WorkbookObject: 保存するワークブックを指定します。通常は ThisWorkbookActiveWorkbook を使用します。

例1: 現在のワークブックを保存する

次の例では、現在のワークブックを上書き保存します。

Sub SaveWorkbook()
    ThisWorkbook.Save
    MsgBox "ファイルが保存されました。"
End Sub

ファイルを別名で保存する方法

VBAで別名保存する方法(SaveAsメソッド)と拡張子の指定

新しい名前でファイルを保存したい場合は、SaveAs メソッドを使用します。このメソッドを使うことで、指定したファイル名や形式でファイルを保存することができます。

基本構文

WorkbookObject.SaveAs Filename:="保存先のパスとファイル名", FileFormat:=ファイル形式

主要なファイル形式

  • xlWorkbookNormal: Excelバイナリファイル(.xls)
  • xlOpenXMLWorkbook: Excel 2007以降のファイル形式(.xlsx)
  • xlCSV: カンマ区切りテキストファイル(.csv)
  • xlText: タブ区切りテキストファイル(.txt)
  • xlPDF: PDFファイル(.pdf)

例2: 別名でファイルを保存する

次の例では、現在のワークブックを「Backup.xlsx」という名前で保存します。

Sub SaveAsNewFile()
    Dim newFileName As String
    newFileName = ThisWorkbook.Path & "\Backup.xlsx"
    
    ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
    MsgBox "ファイルが " & newFileName & " として保存されました。"
End Sub

例1:xlPasteValues: 値のみを貼り付ける

Sub PasteValuesExample()
    ' コピー元のセル範囲を指定
    Range("A1:A10").Copy
    
    ' 値のみを貼り付け
    Range("B1:B10").PasteSpecial Paste:=xlPasteValues
    
    ' クリップボードをクリア
    Application.CutCopyMode = False
End Sub

条件に応じた保存方法

保存する前に、ファイルが変更されているかどうかを確認することも重要です。変更があった場合にのみ保存することで、不要な上書きを防ぐことができます。

例3: 変更があった場合にのみ保存する

次の例では、現在のワークブックに変更があった場合にのみ保存します。

Sub SaveIfChanged()
    If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
        MsgBox "変更があったため、ファイルを保存しました。"
    Else
        MsgBox "変更がないため、保存は行いませんでした。"
    End If
End Sub

保存場所を指定して保存する

保存場所を指定して保存したい場合、ファイルパスを明示的に指定することができます。

例4: デスクトップに保存する

次の例では、現在のワークブックをデスクトップに「Backup.xlsx」という名前で保存します。

Sub SaveToDesktop()
    Dim newFileName As String
    Dim desktopPath As String
    desktopPath = Environ("USERPROFILE") & "\Desktop"
    
    newFileName = desktopPath & "\Backup.xlsx"
    
    ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
    MsgBox "ファイルがデスクトップに " & newFileName & " として保存されました。"
End Sub

例5: CSV形式で保存する

次の例では、現在のワークブックを「Backup.csv」という名前でCSV形式で保存します。

Sub SaveAsCSV()
    Dim newFileName As String
    newFileName = ThisWorkbook.Path & "\Backup.csv"
    
    ThisWorkbook.SaveAs Filename:=newFileName, FileFormat:=xlCSV
    MsgBox "ファイルが " & newFileName & " としてCSV形式で保存されました。"
End Sub

まとめ

エクセルマクロを使用してファイルを保存する方法は多岐にわたります。Save メソッドや SaveAs メソッドを使い分けることで、上書き保存や別名保存、形式を指定しての保存が可能です。この記事を参考にして、あなたの作業に合った保存方法を見つけてください。

エクセルマクロに関する他の質問やリクエストがあれば、コメントで教えてください!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

自動車メーカーで、VBAやRPAを用いた業務効率化・業務改善を行っております。

目次