Exelを扱う際に、上書き保存をすることはよくあるかと思います。
そこで今回は、VBAでファイルを保存する際に使うSaveメソッドについて解説していきたいと思います。
Saveメソッドとは?
Saveメソッドは、指定したブックを上書き保存する方法です。
例えば、表示中のブックを保存する場合、次のように書くことで簡単に上書き保存ができます。
ActiveWorkBook.Save
上書きするブックが新規の場合は、「Book1.xlsx」などの仮の名前で保存されます。
サンプルコードを交えて使い方を解説
上書き保存をする際の指定方法にはいくつか種類があります。
以下がそのサンプルコードです。
【サンプルコード】
Public Sub save()
'マクロ実行中のブックを上書き保存する
ThisWorkbook.Save
'表示中のブックを上書き保存する
ActiveWorkbook.Save
'ブック名を指定して上書き保存する
Workbooks("ブック名").Save
End Sub
また、開いているブックを全て上書き保存したい場合には、次のような方法があります。
Public Sub saveAll()
Dim wb As Workbook
'開いているブックをループで一つずつ処理する
For Each wb In Workbooks
'処理中のブックを上書き保存
wb.Save
Next wb
End Sub
上書き保存で警告メッセージが出る場合の対処法
ファイルを保存しようとすると、ごく稀に警告メッセージが出ることがあります。
例えば、上書きしようとしたブックが新規の場合、先ほど説明したように仮の名前をつけて保存しようとしますが、この時に既に同じ名前のファイルが存在していると以下のようなメッセージが表示されます。
もし、メッセージを表示せずに強制的に上書き保存したい場合には、「Application.DisplayAlerts」の処理を挟むことで非表示にすることができます。
'警告メッセージを非表示
Application.DisplayAlerts = False
ActiveWorkBook.Save
'警告メッセージを表示
Application.DisplayAlerts = True
【補足】名前を付けてファイルを保存する方法は?
上書き保存をする際にはSaveメソッドを使用しますが、名前を付けて別のファイルとして保存したいケースもあるかと思います。
その場合には、SaveAsメソッドを使うことで、ファイル名や保存場所などを指定して保存することができます。
メソッドの基本的な使い方は以下の通りです。
「Filename」という引数を使うことで、保存先のパスとファイル名を指定できます。
【サンプルコード】
ActiveWorkBook.SaveAs Filename:="C:\保存先\ファイル名.xlsm"
Saveメソッドと同じように、SaveAsメソッドもいくつかのワークブックの指定方法があります。
ThisWorkBook.SaveAs 'マクロ実行中のブックを保存
ActiveWorkBook.SaveAs '表示中のブックを保存
Workbooks(“ブック名”).SaveAs 'ブック名を指定して保存
また、「Filename」の他にもいくつかの引数があり、保存先のパスだけでなくファイル形式やパスワードなどを設定することもできます。
二つ以上の引数を使う場合は、次のようにカンマで区切って使用します。
【サンプルコード】
ActiveWorkBook.SaveAs Filename:="C:\User\sample.xlsm", _
FileFormat:=xlCSV, Password:="123456"
上書き保存してからブックを閉じる方法を解説
SaveメソッドとSaveAsメソッドは、いずれもファイルを保存するのみでブックを閉じることはありません。
保存した後にそのままブックを閉じたい場合には、Closeメソッドを使いましょう。
引数に「SaveChanges」を使用することで、閉じた際に上書き保存をするかどうかの指定ができます。
【サンプルコード】
'ブックを上書き保存して閉じる
ActiveWorkBook.Close SaveChanges:=True
'ブックを上書き保存せずに閉じる
ActiveWorkBook.Close SaveChanges:=False
また、SaveAsメソッドと同じように「Filename」を使用することで、名前を付けて保存することもできます。
ActiveWorkBook.Close SaveChanges:=True, Filename:= "ファイル名"
一点だけ注意したいのは、Closeメソッドでブックを閉じた際に上書き保存をするのは、内容に変更があった時だけということです。
変更の有無に関わらず上書き保存をしたい場合には、閉じる前にSaveメソッドで保存するなどしてから閉じるようにしましょう。
まとめ
ここまで、主に3つの保存方法について解説してきました。
ファイルを操作する上ではどれも必須と言えるメソッドかと思いますので、ぜひ覚えて使いこなしてみてください!
関連記事
VBAの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、VBAに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。