こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。
皆さんは、VBAでファイルを上書きする方法を知っていますか?
Excelは大量のデータを扱うため、上書き保存はよく使いますよね。
そこで今回は、
・ファイルを上書き保存するためのSaveメソッドの使い方
といった基礎的なことから、
・保存時にエラーが出たときの対処方法
・SaveAsを使って名前を付けて保存する方法
といった応用的な方法まで、徹底的に解説します!
Saveメソッドの使い方とは
まず、上書き保存するためのSaveメソッドの使い方について簡単に説明します。
以下のように書くことで、簡単にファイルを上書き保存することができます。
ワークブック.Save
例えば、表示しているExcelをそのまま保存する場合は、以下のようになります。
ActiveWorkbook.Save
このように、Saveメソッドを使えば簡単にファイルを上書き保存することができます。
サンプルコード
1ファイルのみであれば先ほどの方法で良いのですが、複数のExcelからデータを取得、加工するケースはよくありますよね。
そのため、ワークブックを指定して保存する方法をサンプルコードで用意しました。
事前に同じフォルダに「Book1.xlsm」「Book2.xlsm」を用意し、「Book1.xlsm」に以下サンプルコードを書いています。
サンプルコード:
Sub Test() Dim wbBook1 As Workbook Dim wbBook2 As Workbook 'Book1を変数に格納 Set wbBook1 = ThisWorkbook 'Book2を開いて変数に格納 Workbooks.Open ThisWorkbook.Path & "¥" & "Book2.xlsm" Set wbBook2 = ActiveWorkbook 'サンプルとしてセルに文字列を書き込む wbBook1.Worksheets("Sheet1").Range("A1").Value = "Book1のファイルを保存" wbBook2.Worksheets("Sheet1").Range("A1").Value = "Book2のファイルを保存" 'ブックを保存 wbBook2.Save wbBook1.Save 'ブックを閉じる wbBook2.Close wbBook1.Close End Sub
サンプルではA1セルに文字列を書き込んだ後、ファイルを保存して閉じる処理を書いています。
このように、Saveメソッドを使うと簡単に上書き保存することができます。
上書き保存で警告メッセージが発生するケース
先ほどの説明で上書き保存はできるのですが、稀に警告メッセージがでる場合があります。
Excelを新しく作ると「Book1.xlsx」のような名前で新規作成されますが、「Book1.xlsx」を上書き保存したとき既に「Book1.xlsx」があった場合などに表示されます。
以下のように「Application.DisplayAlerts」で処理を囲むことで、メッセージを無視して上書き保存することができます。
Application.DisplayAlerts = False 'メインの処理 Application.DisplayAlerts = True
強制的に上書き保存したい場合はこちらの方法でOKです。
ただ、ファイルが既にあった場合は上書き保存したくないケースもありますよね?
その場合は、ファイルの存在チェックを事前に入れるのがおすすめです。
ファイルの存在チェックは、Dir関数で簡単にすることができます。
Dir関数については以下記事で詳しく解説しているので、エラーチェックを入れたい方はぜひ見てみてくださいね!
補足:SaveAsを使って名前を付けて保存する方法とは
上書き保存以外にも、名前を付けて保存したいときもありますよね。
SaveAsメソッドを使えば簡単に上書き保存することができます。
以下で詳しく解説しているので、気になる方は見てみてくださいね!
まとめ
今回は、VBAでファイルを上書き保存する方法について解説しました。
VBAはExcelデータを扱うため、ファイルを保存するケースが多いです。
Saveメソッドは使い方も簡単なので、ぜひ使ってみてくださいね!