ブックの保存済みチェック

VBAでの処理で、処理対象のブックが保存済みかどうかをチェックしたい場合があります。

利用する場面としては、処理対象のブックを保存するときです。保存済みであれば上書き保存を行い、未保存であれば、保存予定の名前と同名のブックの存在を確認して保存する、という流れの中で保存状態の判定に使います。

保存済みのチェックは以下のマクロで行います。

ソースコード

 

処理説明

保存済みのブックはWorkbooks(1).FullNameを見ると、フルパスの”C:\aaa\aaa.xlsm”などのようになります。

ところが未保存のブックは保存先が確定していないことからパスがないためWorkbooks(1).FullNameを見ても、フォルダがなく未確定ファイル名の”Book1″などになります。

拡張子も付きません。

使い方

以下のコードでは、未保存の場合と保存済みの場合のそれぞれをチェックしています。

まず7行目で新規ブックを作成します。

10行目で作成した新規ブックの保存状態を確認します。この時点では未保存のためFalseが返却されます。

17行目で同名ファイルチェック処理を省略していますが、必要な場合は「VBAでファイルの存在をチェックする」ページを参照してください。

20行目で一度新規ブックを保存します。ここではCドライブ直下にシステム日時のファイル名で保存しています。

23行目で保存したブックの保存状態を確認します。この時点では保存済みのためTrueが返却されます。

Macの場合のパス区切り文字はコロン(:)

このブログを見ている方はほとんどがWindows利用者と思うので関係ないとは思いますが一応書いておきます。

MacはUnixベースのためパスの区切り文字が\ではありません。

Unixベースのためスラッシュ(/)かと思いきやそうでもありません。

MacでのFullNameプロパティはコロン(:)でパス区切りがされているため、もしMacで実装する場合は\での判定部分を:に変更してください。