教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA ブック操作】ブック名を指定して保存(SaveAs)するにはどうすればいいの?教えて!

構文

構文は以下の通りです。

Workbook.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)

解説

SaveAsは、ワークブックを指定した名前や形式で保存するメソッド(操作)です。このメソッドを実行することで、現在のワークブックを新しいファイル名や形式で保存します。

引数 指定 内容
FileName 必須 保存するファイルのパスと名前を指定します。
FileFormat 省略可 保存するファイルの形式を指定します。省略した場合は現在のファイル形式で保存されます。
Password 省略可 パスワードを指定します。保存するファイルがパスワードで保護されます。
WriteResPassword 省略可 読み取り専用パスワードを指定します。
ReadOnlyRecommended 省略可 他のユーザーに対して読み取り専用モードで開くことを推奨するかどうかを指定します。
CreateBackup 省略可 保存前にバックアップを作成するかどうかを指定します。
AccessMode 省略可 保存するファイルへのアクセスモードを指定します。
ConflictResolution 省略可 名前の衝突が発生した場合に処理方法を指定します。
AddToMru 省略可 最近使用したファイルの一覧に追加するかどうかを指定します。
TextCodepage 省略可 テキストファイルの文字コードを指定します。
TextVisualLayout 省略可 テキストファイルの視覚的なレイアウトを指定します。
Local 省略可 ローカル設定を使用するかどうかを指定します。

使い方

SaveAs関数は、Workbookオブジェクトに対して直接呼び出すことができます。以下にSaveAs関数の使用例を示します。

Sub SaveWorkbook()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    ' ファイルを新しい名前で保存する
    wb.SaveAs "C:\Documents\NewWorkbook.xlsx"
End Sub

上記の例では、現在のWorkbookオブジェクト(ThisWorkbook)を新しい名前で保存しています。保存先のパスとファイル名を指定することで、指定した場所にファイルが保存されます。

プログラミング例

次に、ファイル形式やパスワードの指定など、より詳細なプログラミング例を示します。

Sub SaveWorkbook()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    ' 別の形式で保存する例(PDF形式)
    wb.SaveAs "C:\Documents\NewWorkbook.pdf", FileFormat:=xlTypePDF
    ' パスワードで保護して保存する例
    wb.SaveAs "C:\Documents\NewWorkbook.xlsx", Password:="password"
    ' 読み取り専用パスワードを指定して保存する例
    wb.SaveAs "C:\Documents\NewWorkbook.xlsx", WriteResPassword:="readpassword", ReadOnlyRecommended:=True
    ' バックアップを作成して保存する例
    wb.SaveAs "C:\Documents\NewWorkbook.xlsx", CreateBackup:=True
End Sub

上記の例では、SaveAs関数にさまざまなオプションを使用しています。例えば、ファイル形式をPDFに変更する場合は「FileFormat:=xlTypePDF」と指定します。また、パスワードを設定する場合は「Password:=パスワード」、読み取り専用パスワードを設定する場合は「WriteResPassword:=読み取り専用パスワード」と指定します。

まとめ

SaveAs関数を使用することで、ファイルの保存先や形式、パスワードの設定などを柔軟に制御することができます。是非、ExcelVBAの学習や日常の業務でSaveAs関数を活用してみてください。