エクセルVBAでファイルを保存する方法 | Workbooks.SaveAsメソッドの使い方

workbooks.SaveAsについて VBA

おつかれさまです!

エクセルVBAでファイルを保存する方法に悩んだことはありませんか?

このようなことがしたい
  • VBAで特定のファイルを別の名前や場所に保存したい。
  • ファイル形式を変更して保存したい。

この記事では、エクセルVBAの「Workbooks.SaveAsメソッド」を使用してファイルを保存する方法について詳しく説明します。

基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。

ぜひ最後までお読みください。


【 この記事の概要 】

  よく使う度    3.0  
  難しさ     2.0  
  覚えておくと安心度    4.0  

この記事を見てできるようになること

この記事を読めば、以下のことができるようになります。

この記事を見てできるようになること
  • VBAでファイルを別の名前や場所に保存する方法を理解し、適切な設定方法を学べる。
  • ファイル形式を指定して保存する方法がわかる。
  • 保存時に警告を非表示にする方法がわかる。

ファイルの保存方法の違い

エクセルVBAでファイルを保存するには、次のように3つの方法があります。

メソッド名説明特徴詳細記事のリンク
Close
メソッド
開いているファイルを
閉じるために使用します。
変更を保存するかどうかを指定でき、
変更がある場合は確認ダイアログが
表示されます。
ファイルを閉じることができます。
Closeメソッドに
ついてはこちら
Save
メソッド
開いているファイルを
上書き保存するために
使用
します。
変更内容をそのまま元のファイルに
保存します。
ファイルを閉じることはできません。
Saveメソッドに
ついてはこちら
SaveAs
メソッド
開いているファイルを
新しい名前または場所に
保存するために使用
します。
変更内容を別のファイルとして保存します。
ファイル形式や名前を指定できます。
ファイルを閉じることはできません。
本記事です

今回はSaveAsメソッドについて記載しますね。

Workbooks.SaveAsメソッドの基本

まずは、VBAでファイルを別名保存する基本的な方法について説明します。

Workbooks.SaveAsメソッドとは?

Workbooks.SaveAsメソッドは、開いているエクセルファイルを別の名前や場所に保存するために使用するVBAのメソッドです。

このメソッドを使用することで、VBAコードから直接エクセルファイルを保存することができます。

Workbooks.SaveAsメソッドの構成・引数

Workbooks.SaveAsメソッドは、多くの引数を持っており、それぞれに特定の機能があります。

SaveAsの構成

引数が多すぎて訳が分かりませんね。。。
安心してください。よく使用するものだけ、覚えたら問題有りません。

以下のテーブルに代表的な引数をまとめました。

引数省略可能か説明デフォルト値
Filename省略可能保存するファイルのパス・名前を指定します。
パスを指定しなければ現在のフォルダーに
保存されます。
なし
FileFormat省略可能保存するファイルの形式を指定します。
使用できる定数はXlFileFormat列挙型で
定義されています。
⇒ 一覧はこちら
xlWorkbookNormal
Password省略可能ファイルを保護するためのパスワードを
15文字以内で指定します。
大文字と小文字は区別されます。
なし
WriteResPassword省略可能ファイル書き込みパスワードを指定します。なし
ReadOnlyRecommended省略可能ファイルを読み取り専用として開くことを
推奨するかどうかを指定します。
読み取り専用を推奨するメッセージを
表示するにはTrueを指定します。
False
CreateBackup省略可能バックアップファイルを作成するか
どうかを指定します。
作成する場合はTrueを指定します。
False

より詳しい情報は、Microsoft公式 – Workbooks.SaveAs メソッドを参照してみてください。

FileFormat引数の値一覧

さらにFileFormat引数について、代表的なものを紹介します。

定数説明
xlWorkbookNormal標準のエクセルファイル(.xls)
xlOpenXMLWorkbookExcel 2007以降の形式(.xlsx)
xlOpenXMLWorkbookMacroEnabledマクロ有効のExcel 2007以降の形式(.xlsm)
xlCSVCSVファイル形式(.csv)
xlExcel12Excel 12バイナリファイル形式(.xlsb)
xlExcel8Excel 97-2003ファイル形式(.xls)
xlTextテキストファイル形式(.txt)
xlUnicodeTextUnicodeテキスト形式(.txt)
xlHTMLHTML形式(.html)
xlXMLSpreadsheetXMLスプレッドシート形式(.xml)

より詳しい情報は、Microsoft公式 – XlFileFormat 列挙体を参照してみてください。

Workbooks.SaveAsメソッドの使用例

それでは、具体的な使い方を見ていきましょう。

使用例1: ファイルを別の名前で保存する方法

基本的なファイルを別の名前で保存する方法を紹介します。

以下のように実行すると、ファイルを別の名前で保存することができます。

Sub 別名保存する()
    Workbooks("ファイル名.xlsx").SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx"
End Sub

このコードを実行すると、Filename引数で指定されたパスに新しい名前でファイルが保存されます。

使用例2: 新しいファイル名を入力してファイルを保存する方法

ユーザーに新しいファイル名を入力してもらい保存する方法について紹介します。

Filename引数を指定しない場合、ファイルを保存するダイアログが表示され、ユーザーに新しいファイル名を入力させることができます。

Sub 保存ダイアログを表示する()
    Workbooks("ファイル名.xlsx").SaveAs
End Sub

しかし、その場合ファイルを保存するダイアログで「いいえ(N)」や「キャンセル」を押すとエラーが出てしまいます。

保存ダイアログでいいえを押すとエラーが出る

この場合は、次のコードのように「On Error GoTo ~」を使用し、エラー処理を行うと解決することができます。

Sub エラー処理を追加し保存する()
    On Error GoTo Err
    
    Workbooks("サンプル1.xlsx").SaveAs
    
    Exit Sub
Err:
    MsgBox ("保存は失敗しました。")
End Sub

このようにすることで、「いいえ(N)」や「キャンセル」を押すとメッセージボックスが出てきて終了することができます。

引数に使用している「:=」について

VBAのルールで、引数を設定する際に使用される記号は「:=」を使用します。
VBAのIF等で使用される「=」は、右辺と左辺が等しい、または右辺を左辺に代入するという意味になります。

使用例3: オブジェクト変数を使用してファイルを別名保存する方法

オブジェクト変数を使用してファイルを別名保存する方法を紹介します。

下記コードは、始めにオブジェクト変数を使用しファイルを開き、最後に別名保存を行っています。

Sub オブジェクト変数を使用して別名保存する()
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)
    
    '// Wbを使用して処理を実施
    
    Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx"
End Sub

このコードを実行すると、オブジェクト変数Wbを使用してファイルが別名で保存されます。

「Const」は、定数を宣言するために使用します。
ここでは、ファイルパスを定数として定義しています。
このようにファイルパスを別で定義しておくと、可読性が向上しメンテナンスがしやすくなります

使用例4: ファイル形式を指定して保存する方法

ファイル形式を指定して保存する方法を紹介します。

FileFormat引数をに定数を入力することで、保存するファイルの形式を指定できます。
※FileFormat引数の詳細情報については、こちらを参照ください。

Sub ファイル形式を指定して保存する()
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)
    
    '// Wbを使用して処理を実施
    
    Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

このコードを実行すると、指定された形式でファイルが保存されます。

使用例5: パスワードを設定してファイルを保存する方法

パスワードを設定してファイルを保存する方法を紹介します。

Password引数を使用して、保存するファイルにパスワードを設定できます。

Sub パスワードを設定して保存する()
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)
    
    '// Wbを使用して処理を実施
    
    Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx", Password:="mypassword"
End Sub

このコードを実行すると、パスワードが設定された状態でファイルが保存されます。

使用例6: 保存時に警告を非表示にする方法

保存時に警告を非表示にする方法を紹介します。

DisplayAlertsプロパティを使用して、警告を非表示にできます。

Application.DisplayAlerts を使用して警告を非表示にした場合は、処理の最後に再表示する設定を忘れないようにしましょう。

Sub 警告を非表示にして保存する()
    Const filePath As String = "C:\パス\ファイル名.xlsx"
    Dim Wb As Workbook
    Set Wb = Workbooks.Open(filePath)
    
    '// 警告を非表示にする
    Application.DisplayAlerts = False
    
    '// Wbを使用して処理を実施
    
    Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx"
    
    '// 警告を再表示にする
    Application.DisplayAlerts = True
End Sub

このコードを実行すると、警告を非表示にしてファイルが保存されます。

まとめ

エクセルVBAでファイルを保存する方法を理解することで、作業が効率化されます。

Workbooks.SaveAsメソッドを使いこなすことで、様々なファイル操作を自動化できます。

ファイルの保存には、Close、Save、SaveAsの3つの方法があります。各メソッドを使い分けて、効率的に作業を進めましょう。

今回の記事を参考に、VBAを使ってエクセルファイルを保存する方法をマスターし、業務の効率化を図ってください。

タイトルとURLをコピーしました