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

当ページのリンクには広告 (Amazonアソシエイト含む) が含まれています。
workbooks.SaveAsについて

「エクセルのファイル形式を変更して閉じるにはどうしたらいいんだろう?」
このように悩んだことはありませんか?


VBAで特定のファイルを別の名前や場所に保存したい。

ファイル形式を変更して保存したい。

その場合は、VBAの「Workbooks.SaveAsメソッド」を
使用すると解決します!


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

たとえば、「vba saveas workbook」を使えば、ファイルを別の名前や指定した場所に保存できます。
また、「vba saveas fileformat」でファイル形式を変更して保存することも可能です。
さらに、保存時に上書き確認を回避したい場合には「vba saveas 上書き」を使うことで、煩わしい警告を表示させずにスムーズに保存できます。

基本的な使い方から応用的なテクニックまで、初心者でもすぐに実践できる内容です。
ぜひ最後までお読みください。


【 この記事の概要 】

よく使う度
難しさ
覚えておくと安心度
目次

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

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

VBAのSave, SaveAs, Closeメソッドの使い分け | 保存・閉じる方法の違い

エクセルVBAでワークブックを保存・閉じるには、主に3つのメソッド(Save, SaveAs, Close)があります。

ワークブックの保存と閉じ方の違い
  • SaveAsメソッド
    • ワークブックを新しい名前や異なる場所に保存するために使います。
      また、引数の「fileformat」を使用すると、ファイル形式を変更することもできるため、.xlsm, .xlsx, .csvなど異なる形式での保存が可能です。
      これにより、バージョン管理やバックアップにも役立ちます。
  • Closeメソッド
    • ワークブックを閉じるために使います。
      このメソッドは、ファイルに変更があった場合に保存するかどうかを確認するダイアログを表示します。
      保存の確認が不要で、すぐにファイルを閉じたい場合は、このメソッドにオプションを追加することで、メッセージを表示せずに閉じることも可能です。
  • Saveメソッド
    • 開いているワークブックをそのまま上書き保存する際に使用します。
      ファイル名や保存場所を変更せず、現在作業している内容をすぐに保存したいときに便利です。

エクセルVBAでワークブックを保存・閉じる方法一覧

スクロールできます

Close
メソッド

Save
メソッド

SaveAs
メソッド
同じパスで名前を変更して保存不可不可可能
新規パスに保存不可不可可能
上書き保存可能可能可能
保存せずに閉じる可能不可不可
ファイル形式変更不可不可可能
記事を見る記事を見る記事を見る
ワークブックの保存と閉じ方の違い
引用元:エクセルVBAで「Workbooks.Close」を使ってワークブックを保存せずに閉じる方法
スポンサーリンク

VBAの「Workbooks.SaveAsメソッド」の基本について解説

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

Workbooks.SaveAsメソッドとは? | どんなことができる

VBAのWorkbooks.SaveAsメソッドは、エクセルのワークブックを新しい名前や異なる保存場所に保存するために使用されます。

たとえば、作業中のファイルを別名で保存したり、特定のファイル形式を指定して保存したい場合に便利です。
このメソッドを使用することで、VBAコードから直接エクセルファイルを保存することができます。

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

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


SaveAsの構成

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

設定解説
  • expression (必須)
    • 保存したいワークブック名を指定します。
      例:「ActiveWorkbook」、「Workbooks(“ファイル名.xlsx”)」、「Wb.Save」のように使用します。

      Workbooks.Saveメソッドには引数がなく、開いているワークブックをそのまま上書き保存します。

以下に代表的な引数をまとめました。

引数省略可能か説明デフォルト値
Filename省略可能保存するファイルのパス・名前を指定します。
パスを指定しなければ現在のフォルダーに保存されます。
なし
FileFormat省略可能保存するファイルの形式を指定します。
使用できる定数はXlFileFormat列挙型で
定義されています。

⇒ くわしくはFileFormat引数の値一覧
xlWorkbookNormal
Password省略可能ファイルを保護するためのパスワードを
15文字以内で指定します。
大文字と小文字は区別されます。
なし
WriteResPassword省略可能ファイル書き込みパスワードを指定します。なし
ReadOnlyRecommended省略可能ファイルを読み取り専用として開くことを
推奨するかどうかを指定します。
読み取り専用を推奨するメッセージを
表示するにはTrueを指定します。
False
CreateBackup省略可能バックアップファイルを作成するか
どうかを指定します。
作成する場合はTrueを指定します。
False

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

Workbooks.SaveAsメソッドの宣言例

ワークブックを別名にして保存する場合の例を記述します。

Sub 別名で保存する()
    '// saveasでworkbookを別名に変更する例
    Workbooks("サンプル.xlsx").SaveAs Filename:="C:\保存先\別名サンプル.xlsx"
End Sub

また、ファイル形式を指定する方法の例も追加します。

Sub ファイル形式を指定して保存する()
    '// saveasのfileformatを使って、ファイル形式を指定して保存
    Workbooks("サンプル.xlsm").SaveAs Filename:="C:\保存先\新しいファイル.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub

このように記述することで、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 列挙体を参照してください。

VBA「Workbooks.SaveAsメソッド」の引数に使用される「:=」について

VBAで引数を指定する際に使われる「:=」は、引数名と値を明確に対応させるための記号です。

この記号を使うことで、引数がどのパラメータに対応するかを明確にし、コードの読みやすさを高めます。

例えば、FileFormat引数を使って保存するファイル形式を指定する際は、以下のように「:=」を使います。

Workbooks("サンプル.xlsx").SaveAs Filename:="C:\保存先\新しいファイル.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled

この例では、「FileFormat:=xlOpenXMLWorkbookMacroEnabled」と指定することで、マクロ有効のExcel形式(.xlsm)でファイルが保存されます。

FileFormat引数に何も指定しない場合は、デフォルトのExcel形式(.xlsx)で保存されます。

「:=」と「=」の違いについて

「:=」は、引数を設定する際に使われる記号です。

これに対して、「=」は、通常の代入文で使われ、変数に値を代入する際に使用されます。

例えば、変数に値を代入する場合は以下のように「=」を使います。

Dim myVar As String
myVar = "テスト"

このように、引数指定には「:=」、代入には「=」を使うという違いがあるため、VBAコードを書く際にこの2つを適切に使い分けることが重要です。

VBA「Workbooks.SaveAsメソッド」がよく使われる場面

VBAのWorkbooks.SaveAsメソッドは、Excelで自動的にファイルを保存したり、異なる形式や場所にファイルを保存したりする際に非常に便利です。

特に、業務でのExcel作業の効率化に役立つため、よく使われるシチュエーションをいくつか紹介します。

ファイル名や場所を変えてバックアップを作成する場合

Excelファイルの定期的なバックアップを作成する際、手動で名前を変更して保存するのは手間がかかります。

そこで、SaveAsメソッドを使用することで、ファイル名や保存場所を自動で指定し、バックアップを作成することができます。

Sub バックアップを作成する()
    Workbooks("データ.xlsx").SaveAs Filename:="C:\バックアップ\データ_backup.xlsx"
End Sub

この例では、作業中のファイルを「データ_backup.xlsx」という名前で別のフォルダーに自動保存します。

この方法はバックアップ作成の効率化に貢献します。

異なるファイル形式で保存する場合

Excelデータを他の形式(例: CSVやPDF)で保存する必要がある場面では、SaveAsメソッドが大活躍します。

例えば、会計データをCSV形式で保存し、他のシステムにインポートする際などに便利です。

Sub CSV形式で保存する()
    Workbooks("データ.xlsx").SaveAs Filename:="C:\保存先\データ.csv", FileFormat:=xlCSV
End Sub

このように、FileFormat引数を使うことで、Excelファイルを異なる形式で簡単に保存することができ、異なるソフトウェア間でのデータ交換がスムーズになります。

⇒ 「引数「FileFormat」の値一覧」をもう一度見る

ファイルを上書きせずに新しいバージョンを作成する場合

同じファイルを何度も編集する際、過去のバージョンを残したい場合もあります。

SaveAsメソッドを使えば、ファイル名に日付やバージョン番号を付け加えて、新しいバージョンとして保存することができます。

Sub バージョン管理で保存する()
    Dim currentDate As String
    currentDate = Format(Date, "yyyy-mm-dd")
    Workbooks("プロジェクト.xlsx").SaveAs Filename:="C:\保存先\プロジェクト_" & currentDate & ".xlsx"
End Sub

このコードでは、現在の日付をファイル名に含めることで、バージョン管理を容易にします。

過去の作業内容を保管しつつ、新しいバージョンを作成できるため、ミスを防止しやすくなります。

ユーザーにファイル名を入力させる場合

プログラムを開発していると、ユーザーに保存するファイル名を選ばせたい場合があります。

このようなとき、SaveAsメソッドを使うと、保存ダイアログを表示させてユーザーが新しいファイル名を指定することができます。

Sub ユーザーに保存先を指定して保存する()
    '// FileDialogオブジェクトを作成
    Dim fd As FileDialog
    Dim filePath As String
    
    '// FileDialogの種類を「保存」として設定
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    
    '// 保存先のフォルダー選択ダイアログを表示
    With fd
        .Title = "保存先を指定してください"
        .InitialFileName = "C:\保存先\新しいファイル.xlsx"
        
        '// ユーザーが選択した場合の処理
        If .Show = -1 Then
            filePath = .SelectedItems(1) '// 選択された保存先のパスを取得
            '// Workbooks.SaveAsメソッドで保存
            ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook
        Else
            MsgBox "保存がキャンセルされました。", vbExclamation
        End If
    End With
End Sub

ユーザーにインタラクティブにファイル名や保存先を決めてもらえるので、状況に応じたファイルの管理がしやすくなります。

スポンサーリンク

VBA「Workbooks.SaveAsメソッド」を使う際の注意ポイント

VBAのWorkbooks.SaveAsメソッドは非常に便利ですが、使い方を間違えるとエラーが発生することや、思わぬ動作をすることがあります。

これらのポイントを理解することで、スムーズにVBAコードを実行でき、問題を回避できます。

Application.DisplayAlertsを使って警告メッセージを抑制する

VBAでWorkbooks.SaveAsメソッドを使用してファイルを保存する際、上書き保存を行う場合や、ファイル形式を変更する場合、通常は確認メッセージが表示されます。

例えば、既存のファイルに上書きしようとすると、「本当に上書きしますか?」というメッセージが出ることがあります。

このようなメッセージを表示させたくない場合は、Application.DisplayAlertsプロパティを使用して警告メッセージを抑制することができます。

コード例 | 警告なしで上書き保存を行う方法

Sub ファイルを警告なしで上書き保存する()
    Application.DisplayAlerts = False '// 警告メッセージを表示しない
    ActiveWorkbook.SaveAs Filename:="C:\保存先\上書きファイル.xlsx", FileFormat:=xlOpenXMLWorkbook
    Application.DisplayAlerts = True '// メッセージ表示を元に戻す
End Sub

説明

このコードでは、DisplayAlertsをFalseに設定することで、上書き保存の確認メッセージや、ファイル形式の変更時に表示される警告メッセージを非表示にしています。

この機能は、上書き保存やファイル形式変更(例: FileFormatを使用)を自動的に処理したい場合に非常に便利です。

処理が完了したら忘れずにTrueに戻しましょう

処理の最後でApplication.DisplayAlertsをTrueに戻すことが重要です。

これは、次の操作で通常通り警告メッセージが表示されるようにするためです。

もしDisplayAlertsをTrueに戻すのを忘れてしまうと、後の操作で警告メッセージが表示されず、意図せず上書き保存やファイル形式変更が行われてしまう可能性があります。

これにより、重要なデータが上書きされてしまうリスクがあるため、常にTrueに戻すことを忘れないようにしましょう。

保存ダイアログで「いいえ」を押すとエラーが発生する場合の処理方法

Workbooks.SaveAsメソッドを使って、ユーザーにファイル名や保存先を選ばせる場合、保存ダイアログが表示されます。

しかし、ユーザーが保存ダイアログで「いいえ」や「キャンセル」を押すと、エラーが発生することがあります。

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

これを防ぐためには、エラーハンドリングを追加する必要があります。

Sub 保存ダイアログでキャンセルを処理する()
    On Error GoTo ErrHandler ' エラーハンドリング
    Dim filePath As String
    filePath = Application.GetSaveAsFilename(FileFilter:="Excel Files (*.xlsx), *.xlsx")

    ' キャンセルが押された場合
    If filePath = "False" Then
        MsgBox "保存がキャンセルされました。", vbInformation
    Else
        ActiveWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook
    End If
    Exit Sub

ErrHandler:
    MsgBox "保存に失敗しました。エラーコード:" & Err.Number, vbExclamation
End Sub

このコードでは、ユーザーが保存ダイアログで「キャンセル」や「いいえ」を押した場合に、メッセージボックスを表示してエラーを防いでいます。

特に、保存先やファイル名を指定する場合、こうしたエラーハンドリングは重要になります。
注意しましょう。

スポンサーリンク

Workbooks.SaveAsメソッドの使用例

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

以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。

VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。

特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。

多彩な講座から自分に合った講座を探そう!
UdemyでVBAを検索
UdemyでVBAを検索 画像出典:Udemy

\  自分のペースで学べるVBA講座はこちら  /

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

VBAでファイルを別名で保存する基本的な方法を紹介します。
Workbooks.SaveAsメソッドを使えば、簡単にファイル名や保存先を変更して保存することができます。

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

コード例 | Workbooks.SaveAsメソッドを使用してファイルを別名で保存

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

コードの動作概要

STEP
サブルーチンの定義

まず、「Sub 別名保存する」で新しいサブルーチンを定義します。
これは保存処理を実行するための一連の動作をまとめた小さなプログラムです。

STEP
Workbooks.SaveAsメソッドの使用

Workbooks("ファイル名.xlsx").SaveAs を使って、現在開いているワークブックを指定します。
「Filename」引数で、新しいファイル名と保存先を指定し、その場所にファイルを保存します。

STEP
プログラムの終了

最後に、サブルーチンが終了し、プログラムが次の処理へ進みます。
ファイルが保存されているので、手動で「名前を付けて保存」を行う手間を省くことができます。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 別名保存する()
    • この行では、サブルーチン(プロシージャ)「別名保存する」を定義しています。
      サブルーチンは、特定の操作や処理をまとめて実行するための小さなプログラムです。
  2. Workbooks(“ファイル名.xlsx”).SaveAs Filename:=”C:\新しいパス\新しいファイル名.xlsx”
    • この行では、現在開いているExcelのワークブック「ファイル名.xlsx」を別の名前と保存先に保存する処理を行っています。
      ここで使用されているWorkbooks.SaveAsメソッドは、Excelのワークブックを新しい名前や保存場所に保存するためのメソッドです。
      • Filename
        • 保存先やファイル名を指定するための引数で、これが省略されると、現在の保存先にそのまま保存されます。
          新しいファイル名やパスを指定することで、同じファイル名を別の場所に保存したり、異なる名前で保存することができます。
  3. End Sub
    • この行でサブルーチンが終了します。
      すべての処理が完了した後、End Subによってプログラムのこの部分が終了し、次の操作へ進みます。

総括・ポイント

ファイルを別名で保存する基本的な操作を自動化でき、ビジネスのワークフローに組み込むことで、手動での保存作業を減らし、効率化を実現することができます。

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

Filename引数を指定せずにWorkbooks.SaveAsメソッドを使用することで、ユーザーに保存ダイアログを表示させ、選択してもらう方法を紹介します。

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

コード例 | Workbooks.SaveAsメソッドを使用して保存ダイアログを表示

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

コードの動作概要

STEP
サブルーチンの定義

「保存ダイアログを表示する」という名前のサブルーチンを定義し、保存処理をまとめます。

STEP
保存ダイアログの表示

Workbooks("ファイル名.xlsx").SaveAs において、保存ダイアログが表示されます。

STEP
プログラムの終了

保存処理が完了し、サブルーチンが終了します。

このコードで使用している機能

  • なし

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 保存ダイアログを表示する()
    • この行では、サブルーチン(プロシージャ)「保存ダイアログを表示する」を定義しています。
      サブルーチンは、特定の操作をまとめて実行するための小さなプログラムです。
  2. Workbooks(“ファイル名.xlsx”).SaveAs
    • この行では、指定されたワークブック(「ファイル名.xlsx」)に対してWorkbooks.SaveAsメソッドを使用していますが、ここではFilename引数を指定していないため、VBAは保存ダイアログを自動的に表示します。
      • Workbooks(“ファイル名.xlsx”)
        • ここでは、開いているワークブックの名前「ファイル名.xlsx」を指定します。
          この部分で、操作対象のワークブックがどれかをVBAに伝えています。
      • .SaveAs
        • SaveAsメソッドは、通常、ファイルを別名で保存するために使用しますが、Filename引数を指定していない場合、保存ダイアログが表示され、ユーザーに新しいファイル名を指定させます。
          このダイアログでは、ユーザーが新しいファイル名や保存先を手動で入力します。
  3. End Sub
    • この行でサブルーチンが終了します。サブルーチン内の処理がすべて終了すると、プログラムは次のステップに進みます。
      End Subは、サブルーチンの終わりを明示する重要な行です。

総括・ポイント

この使用例では、ユーザーに新しいファイル名や保存先を指定させるシンプルな方法を紹介しました。
Filename引数を省略することで、保存ダイアログを表示し、ユーザーがファイル名や保存先を手動で指定できる形にしています。
これにより、特定の保存場所に固定せず、動的なファイル保存を実現でき、ユーザーに柔軟な操作を提供します。

このコードは、ユーザーにファイル名や保存先を選ばせたい場面で非常に役立ちます。
また、保存ダイアログが表示されるため、ユーザーが誤ってファイルを上書き保存してしまうリスクも軽減されます。

ただし、保存ダイアログで「キャンセル」や「いいえ」を選択すると、エラーが発生することがあります。
この場合、適切なエラーハンドリングを行わないと、プログラムが停止する可能性があります。
エラーハンドリングを追加することで、ユーザーが保存をキャンセルした場合にもエラーが表示されないようにすることができます。

⇒ 「注意ポイント: 保存ダイアログで「いいえ」を押すとエラーが発生する場合の処理方法」をもう一度見る

使用例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

コードの動作概要

STEP
ファイルパスの指定

Constステートメントを使って、開くファイルのパスを指定します。
ここでは、"C:\パス\ファイル名.xlsx" というファイルを開くように設定しています。

STEP
オブジェクト変数の宣言

Dimステートメントを使用して、Workbook型のオブジェクト変数「Wb」を宣言します。
これにより、開いたワークブックを「Wb」という変数に格納し、後でその変数を使って操作が可能になります。

STEP
ファイルを開く

Set Wb = Workbooks.Open(filePath) で、指定されたパスのファイルを開き、それをオブジェクト変数「Wb」にセットします。

STEP
別名で保存

Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx" で、ワークブックを新しい名前と場所に保存します。
これにより、元のファイルは保持され、新しいファイルが指定した保存先に作成されます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub オブジェクト変数を使用して別名保存する()
    • この行では、サブルーチン(プロシージャ)「オブジェクト変数を使用して別名保存する」を定義しています。
      このサブルーチンが呼び出されると、指定したファイルを開き、別名で保存する一連の処理が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • この行では、定数「filePath」を定義し、開きたいファイルのパスを指定しています。
  3. Dim Wb As Workbook
    • この行では、Workbook型のオブジェクト変数「Wb」を宣言しています。
  4. Set Wb = Workbooks.Open(filePath)
    • この行では、Workbooks.Openメソッドを使用して、指定したファイルを開きます
      • 「Set Wb」は、開いたワークブックをオブジェクト変数「Wb」にセットする操作です。
        これにより、「Wb」を使って、そのワークブックに対する操作が可能になります。
  5. ‘// Wbを使用して処理を実施
    • この行は、コメントとして記載されており、ここに実際に行いたい操作(例えば、データの書き込みやセルの変更)を記述することができます。
  6. Wb.SaveAs Filename:=”C:\新しいパス\新しいファイル名.xlsx”
    • この行では、オブジェクト変数「Wb」を使用して、開いたワークブックを別名で保存しています。
      • SaveAsメソッド
        • ファイルを新しい名前と保存先に保存します。
      • Filename
        • 新しい保存先とファイル名(例: “C:\新しいパス\新しいファイル名.xlsx”)を指定しています。
          これにより、元のファイルを保持したまま、新しいファイルとして保存することができます。
  7. End Sub
    • この行でサブルーチンが終了します。
      全ての処理が完了すると、次の処理に進むことができます。

総括・ポイント

この使用例では、オブジェクト変数を使用してファイルを別名で保存する方法を紹介しました。
オブジェクト変数「Wb」を使うことで、開いたワークブックに対して効率的に操作を行い、その後、簡単に別名保存を行うことができます。
これは、複数の処理を伴うファイル操作や、ファイルのバックアップやバージョン管理などに非常に役立ちます。

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

この使用例では、FileFormat引数を使用して、保存するファイルの形式を指定する方法を紹介します。

FileFormatを使うことで、ファイルをさまざまな形式(例: .xlsx, .xlsm, .csvなど)で保存することができ、特定の用途に合わせたファイル形式の保存が可能です。

⇒ 「引数「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

コードの動作概要

STEP
ファイルパスの指定

Constステートメントを使って、開くファイルのパスを指定します。
この例では、”C:\パス\ファイル名.xlsx” というファイルを開きます。

STEP
オブジェクト変数の宣言

Dimステートメントを使用して、Workbook型のオブジェクト変数「Wb」を宣言し、ファイルを開いた後の操作を行いやすくします。

STEP
ファイルを開く

Set Wb = Workbooks.Open(filePath) で、指定されたファイルを開き、それを「Wb」にセットします。

STEP
ファイル形式を指定して保存

Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsm",FileFormat:=xlOpenXMLWorkbookMacroEnabled で、マクロ有効形式(.xlsm)で新しい名前と保存先に保存します。
これにより、元のファイルは保持され、新しい形式のファイルが指定された場所に作成されます。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub ファイル形式を指定して保存する()
    • この行では、サブルーチン「ファイル形式を指定して保存する」を定義しています。
      このサブルーチンが呼び出されると、指定されたファイルを開き、ファイル形式を指定して保存する一連の処理が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • この行では、定数「filePath」を定義し、開きたいファイルのパスを指定しています。
  3. Dim Wb As Workbook
    • この行では、Workbook型のオブジェクト変数「Wb」を宣言しています。
  4. Set Wb = Workbooks.Open(filePath)
    • この行では、Workbooks.Openメソッドを使用して、指定されたファイルパスのファイルを開きます。
  5. ‘// Wbを使用して処理を実施
    • この行はコメントとして記載されており、ここに実際に行いたい操作を追加します。
      たとえば、データの編集や追加処理を行う場合にこの部分にコードを記述します。
  6. Wb.SaveAs Filename:=”C:\新しいパス\新しいファイル名.xlsm”, FileFormat:=xlOpenXMLWorkbookMacroEnabled
    • この行では、オブジェクト変数「Wb」を使って、開いたワークブックを別名かつ異なるファイル形式で保存しています。
      • Filename
        • ここでは、新しいファイルの名前と保存先を指定しています(例: “C:\新しいパス\新しいファイル名.xlsm”)。
      • FileFormat
        • ここでは、ファイル形式を指定しています。
          この例では、「xlOpenXMLWorkbookMacroEnabled」を指定することで、マクロ有効形式(.xlsm)で保存しています。

          ⇒ 「引数「FileFormat」の値一覧」をもう一度見る
  7. End Sub
    • この行でサブルーチンが終了この行でサブルーチンが終了します。
      すべての処理が完了すると、プログラムは次のステップに進みます。

総括・ポイント

この使用例では、FileFormat引数を使って、ファイル形式を指定して保存する方法を紹介しました。
VBAのWorkbooks.SaveAsメソッドを使用することで、Excelファイルを別名で保存する際に、.xlsx, .xlsm, .csv など、さまざまな形式で保存することが可能です。
特に、データの形式に応じたファイルを作成する際には、この方法が役立ちます。

また、FileFormat引数を活用して、保存形式を簡単に変更することで、異なるアプリケーションとのデータ共有や、Excel内での作業効率を向上させることができます。

使用例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

コードの動作概要

STEP
ファイルパスの指定

Constステートメントで、開くファイルのパスを指定します。
ここでは、”C:\パス\ファイル名.xlsx” というファイルを開くように設定されています。

STEP
オブジェクト変数の宣言

DimステートメントでWorkbook型のオブジェクト変数「Wb」を宣言し、ファイルを開いた後にその操作が可能になります。

STEP
ファイルを開く

Set Wb = Workbooks.Open(filePath) で指定されたファイルを開き、Wbにセットします。

STEP
パスワードを設定して別名保存

Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx", Password:="mypassword" で、ワークブックを新しい名前と保存先に保存し、さらにパスワードを設定します。
このパスワードがないと、ファイルを開くことができなくなります。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub パスワードを設定して保存する()
    • この行では、サブルーチン「パスワードを設定して保存する」を定義しています。
      このサブルーチンが呼び出されると、指定されたファイルを開き、パスワードを設定して保存する一連の処理が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • この行では、定数「filePath」を宣言して、開くファイルのパスを指定しています。
  3. Dim Wb As Workbook
    • この行では、Workbook型のオブジェクト変数「Wb」を宣言しています。
  4. Set Wb = Workbooks.Open(filePath)
    • この行では、Workbooks.Openメソッドを使用して、指定されたファイルを開きます。
  5. ‘// Wbを使用して処理を実施
    • この行はコメントとして記載されており、実際の操作や処理を行いたい場合に、そのコードをここに追加します。
      例えば、データの編集やセルへの書き込みなどがここで行われます。
  6. Wb.SaveAs Filename:=”C:\新しいパス\新しいファイル名.xlsx”, Password:=”mypassword”
    • この行では、オブジェクト変数「Wb」を使用して、ワークブックをパスワード付きで別名保存しています。
      • Filename
        • 新しい保存先とファイル名(例: “C:\新しいパス\新しいファイル名.xlsx”)を指定します。
          これにより、元のファイルとは異なる場所や名前で保存されます。
      • Password
        • Password引数を指定することで、保存するファイルにパスワードを設定します。
          この例では、Password:=”mypassword”として、ファイルに「mypassword」というパスワードを設定しています。
  7. End Sub
    • この行でサブルーチンが終了この行でサブルーチンが終了します。
      すべての処理が完了すると、プログラムは次のステップに進みます。

総括・ポイント

この使用例では、Password引数を使って、パスワードを設定してファイルを保存する方法を紹介しました。
これにより、ファイルを開く際にパスワードを要求することで、セキュリティを強化できます。
VBAのWorkbooks.SaveAsメソッドを活用することで、他のユーザーによる不正なアクセスを防ぎ、ファイルの機密性を守ることができます。

また、パスワード付きのファイルを別名で保存することで、元のファイルを安全に保管しながら、必要に応じて異なるバージョンを作成することができます。

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

この使用例では、Application.DisplayAlertsプロパティを使用して、保存時に表示される警告メッセージを非表示にする方法を紹介します。

通常、ファイルを上書き保存する際や、ファイル形式を変更する場合などに、Excelは警告メッセージを表示します。
しかし、Application.DisplayAlertsをFalseに設定することで、これらのメッセージを非表示にし、スムーズに保存処理を進めることができます。

コード例 | 警告を非表示にして保存する方法

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

コードの動作概要

STEP
ファイルパスの指定

Constステートメントで、開くファイルのパスを指定します。
ここでは、”C:\パス\ファイル名.xlsx” というファイルを開く設定になっています。

STEP
オブジェクト変数の宣言

Dimステートメントで、Workbook型のオブジェクト変数「Wb」を宣言します。
ファイルを開いた後、この変数を使ってワークブックに対する操作が行われます。

STEP
ファイルを開く

Set Wb = Workbooks.Open(filePath) で指定されたファイルを開き、そのファイルを「Wb」にセットします。

STEP
警告メッセージの非表示

Application.DisplayAlerts = False で、上書きやファイル形式変更時の警告メッセージを非表示にします。

STEP
ファイルを保存

Wb.SaveAs Filename:="C:\新しいパス\新しいファイル名.xlsx" で、新しい名前と保存先にファイルを保存します。

STEP
警告メッセージの再表示

Application.DisplayAlerts = True で、再び警告メッセージが表示されるように設定し直します。
これを忘れると他の操作に支障が出るため、注意が必要です。

このコードで使用している機能

1行ずつコードを解説

クリック」してコードの詳細解説を見る
  1. Sub 警告を非表示にして保存する()
    • この行では、サブルーチン「警告を非表示にして保存する」を定義しています。
      このサブルーチンが実行されると、Excelの警告メッセージを非表示にして、指定されたファイルを保存する処理が実行されます。
  2. Const filePath As String = “C:\パス\ファイル名.xlsx”
    • この行では、定数「filePath」を定義し、保存したいファイルのパスを指定しています。
  3. Dim Wb As Workbook
    • この行では、Workbook型のオブジェクト変数「Wb」を宣言しています。
  4. Set Wb = Workbooks.Open(filePath)
    • この行では、Workbooks.Openメソッドを使用して、指定されたファイルを開きます。
  5. Application.DisplayAlerts = False
    • この行で、Application.DisplayAlertsを「False」に設定します。
      • Application.DisplayAlerts
        • 警告メッセージを表示するかどうかを制御するプロパティです。
          Falseに設定すると、警告メッセージが表示されなくなり、処理が自動で進行します。
  6. ‘// Wbを使用して処理を実施
    • この行もコメントで、ここで実行する処理を記述する場所を示しています。
      例えば、セルのデータを変更したり、シートを操作したりするコードを追加することができます。
  7. Wb.SaveAs Filename:=”C:\新しいパス\新しいファイル名.xlsx”
    • この行では、Wb.SaveAsメソッドを使ってワークブックを保存します。
      • Filename
        • 保存先のパスと新しいファイル名が指定されています。
          例えば、「C:\新しいパス\新しいファイル名.xlsx」という新しい場所と名前でファイルが保存されます。
  8. Application.DisplayAlerts = True
    • この行で、Application.DisplayAlertsを「True」に戻します。
       
      警告メッセージを再表示するように設定し直すことで、次回以降の処理で通常通りの警告が表示されるようになります。
      これを忘れると、他の操作で必要な警告も表示されなくなる可能性があるため、必ず処理の最後に設定を戻す必要があります
  9. End Sub
    • この行でサブルーチンが終了この行でサブルーチンが終了します。
      すべての処理が完了すると、プログラムは次のステップに進みます。

総括・ポイント

この使用例では、Application.DisplayAlertsプロパティを使って、保存時の警告メッセージを非表示にする方法を紹介しました。
特に、自動保存や一括処理を行う際に、不要な警告メッセージを表示させずに処理を進めることができ、スムーズな作業が可能になります。

ただし、警告メッセージを再表示する設定を忘れないようにすることが重要です。
これを怠ると、後々の操作で警告が表示されず、意図しない操作が実行されるリスクがあります。

⇒ 「注意ポイント: Application.DisplayAlertsを使って警告メッセージを抑制する」をもう一度見る。

スポンサーリンク

この記事のまとめ

エクセルVBAでの「Workbooks.Saveメソッド」を活用することで、ワークブックの保存を自動化する方法を学びました。
これにより、作業の効率化が一段と進みます。

再度ポイントのおさらいを行いましょう。

ポイントのおさらい

  • Workbooks.SaveAsメソッドの基本を理解する
    • Workbooks.SaveAsメソッドを使えば、VBAコードから簡単にファイル名や保存場所を指定してファイルを保存できます。
      また、FileFormat引数を使うことで、ファイル形式を自由に選択することができます。
    • 「Workbooks.SaveAsメソッドの基本」をもう一度見る
  • Workbooks.SaveAsメソッドのよく使われる場面
  • Workbooks.SaveAsメソッドを使う際の注意ポイント
  • Workbooks.SaveAsメソッドの使用例を実践する

この記事を通じて、VBAのWorkbooks.SaveAsメソッドの多様な使い方を学ぶことができました。

ファイルを手動で保存する手間を省き、自動化することで業務の効率を大幅に向上させることができます。

今回の内容をしっかりと身につけ、日常のExcel作業に活用してみてください。

あわせて読みたい
サイトマップ このページは、本サイトの記事を分かりやすくまとめました。ぜひご覧ください。 目次 「VBA」を見る 「Officeスクリプト」を見る 「ワークシート関数」を見る 「JavaScr...
スポンサーリンク
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次