おつかれさまです!
エクセルVBAでファイルを保存する方法に悩んだことはありませんか?
この記事では、エクセルVBAの「Workbooks.SaveAsメソッド」を使用してファイルを保存する方法について詳しく説明します。
基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見てできるようになること
この記事を読めば、以下のことができるようになります。
ファイルの保存方法の違い
エクセルVBAでファイルを保存するには、次のように3つの方法があります。
メソッド名 | 説明 | 特徴 | 詳細記事のリンク |
---|---|---|---|
Close メソッド | 開いているファイルを 閉じるために使用します。 | 変更を保存するかどうかを指定でき、 変更がある場合は確認ダイアログが 表示されます。 ファイルを閉じることができます。 | Closeメソッドに ついてはこちら |
Save メソッド | 開いているファイルを 上書き保存するために 使用します。 | 変更内容をそのまま元のファイルに 保存します。 ファイルを閉じることはできません。 | Saveメソッドに ついてはこちら |
SaveAs メソッド | 開いているファイルを 新しい名前または場所に 保存するために使用します。 | 変更内容を別のファイルとして保存します。 ファイル形式や名前を指定できます。 ファイルを閉じることはできません。 | 本記事です |
今回はSaveAsメソッドについて記載しますね。
Workbooks.SaveAsメソッドの基本
まずは、VBAでファイルを別名保存する基本的な方法について説明します。
Workbooks.SaveAsメソッドとは?
Workbooks.SaveAsメソッドは、開いているエクセルファイルを別の名前や場所に保存するために使用するVBAのメソッドです。
このメソッドを使用することで、VBAコードから直接エクセルファイルを保存することができます。
Workbooks.SaveAsメソッドの構成・引数
Workbooks.SaveAsメソッドは、多くの引数を持っており、それぞれに特定の機能があります。
引数が多すぎて訳が分かりませんね。。。
安心してください。よく使用するものだけ、覚えたら問題有りません。
以下のテーブルに代表的な引数をまとめました。
引数 | 省略可能か | 説明 | デフォルト値 |
---|---|---|---|
Filename | 省略可能 | 保存するファイルのパス・名前を指定します。 パスを指定しなければ現在のフォルダーに 保存されます。 | なし |
FileFormat | 省略可能 | 保存するファイルの形式を指定します。 使用できる定数はXlFileFormat列挙型で 定義されています。 ⇒ 一覧はこちら | xlWorkbookNormal |
Password | 省略可能 | ファイルを保護するためのパスワードを 15文字以内で指定します。 大文字と小文字は区別されます。 | なし |
WriteResPassword | 省略可能 | ファイル書き込みパスワードを指定します。 | なし |
ReadOnlyRecommended | 省略可能 | ファイルを読み取り専用として開くことを 推奨するかどうかを指定します。 読み取り専用を推奨するメッセージを 表示するにはTrueを指定します。 | False |
CreateBackup | 省略可能 | バックアップファイルを作成するか どうかを指定します。 作成する場合はTrueを指定します。 | False |
より詳しい情報は、Microsoft公式 – Workbooks.SaveAs メソッドを参照してみてください。
FileFormat引数の値一覧
さらにFileFormat引数について、代表的なものを紹介します。
定数 | 説明 |
---|---|
xlWorkbookNormal | 標準のエクセルファイル(.xls) |
xlOpenXMLWorkbook | Excel 2007以降の形式(.xlsx) |
xlOpenXMLWorkbookMacroEnabled | マクロ有効のExcel 2007以降の形式(.xlsm) |
xlCSV | CSVファイル形式(.csv) |
xlExcel12 | Excel 12バイナリファイル形式(.xlsb) |
xlExcel8 | Excel 97-2003ファイル形式(.xls) |
xlText | テキストファイル形式(.txt) |
xlUnicodeText | Unicodeテキスト形式(.txt) |
xlHTML | HTML形式(.html) |
xlXMLSpreadsheet | XMLスプレッドシート形式(.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を使ってエクセルファイルを保存する方法をマスターし、業務の効率化を図ってください。