VBAマクロを実行する際、対象となるExcelブックがどのような状態で開かれているかによって、処理を分岐させたり、エラーを未然に防いだりする必要が出てくることがあります。
特に重要なのが、「このブックは編集可能なのか?」や「古いファイル形式ではないか?」といった状態の確認です。この記事では、ブックが「読み取り専用」や「互換モード」であるかどうかをVBAで判断するための、2つの基本的なプロパティを解説します。
ブックが「互換モード」かどうかを判断する方法
互換モードとは?
互換モードとは、古い形式のExcelファイル(.xlsなど)を新しいバージョンのExcelで開いた際に、ファイルの互換性を維持するために一部の新しい機能が制限されるモードのことです。ブックのタイトルバーに「[互換モード]」と表示されます。
新しい関数や機能(例: XLOOKUP関数)を使ったマクロを互換モードのブックで実行するとエラーになるため、事前にこのモードを確認することが重要です。
コードと解説
ブックが互換モードであるかは、Workbookオブジェクトの.Excel8CompatibilityModeプロパティで判断できます。
Sub CheckCompatibilityMode()
Dim currentBook As Workbook
Set currentBook = ThisWorkbook
' .Excel8CompatibilityModeプロパティがTrueかどうかで判断
If currentBook.Excel8CompatibilityMode = True Then
MsgBox "このブック「" & currentBook.Name & "」は互換モードで開かれています。" & vbCrLf & _
"一部の新しい機能は使用できない可能性があります。", vbInformation
Else
MsgBox "このブック「" & currentBook.Name & "」は標準モードです。", vbInformation
End If
End Sub
.Excel8CompatibilityMode: このプロパティは、ブックが互換モードであればTrueを、そうでなければFalseを返します。この値を調べることで、マクロの処理を分岐させることができます。
ブックが「読み取り専用」かどうかを判断する方法
読み取り専用とは?
ブックが読み取り専用の場合、内容の変更はできますが、同じファイル名で上書き保存することはできません。マクロでセルの値を書き換えたり、保存したりする処理を行う前には、必ずこの状態をチェックすべきです。
コードと解説
ブックが読み取り専用であるかは、Workbookオブジェクトの.ReadOnlyプロパティで簡単に判断できます。
Sub CheckIfReadOnly()
Dim currentBook As Workbook
Set currentBook = ActiveWorkbook
' .ReadOnlyプロパティがTrueかどうかで判断
If currentBook.ReadOnly = True Then
MsgBox "このブックは読み取り専用のため、編集処理を中断します。", vbCritical, "処理中断"
' マクロの処理をここで終了させる
Exit Sub
End If
' 読み取り専用でなければ、以下の処理が続行される
MsgBox "このブックは編集可能です。処理を続行します。"
' ... (ここに本来の編集や保存の処理を記述) ...
End Sub
.ReadOnly: このプロパティは、ブックが読み取り専用であればTrueを、編集可能であればFalseを返します。Exit Sub: サンプルコードのように、読み取り専用であった場合にExit Subを使ってマクロをその場で終了させるのは、エラーを未然に防ぐための非常に有効な手法です(このような処理をガード節と呼びます)。
まとめ
マクロの安定性を高めるためには、処理の実行前にブックの状態を確認することが不可欠です。
- 互換モードの確認: 新しい機能を使うマクロが、古い形式のファイルで実行されるのを防ぎたい時に使用。
If myBook.Excel8CompatibilityMode Then ...
- 読み取り専用の確認: ファイルへの書き込みや保存を行うマクロでは、処理の冒頭で必ずチェックすべき必須項目。
If myBook.ReadOnly Then Exit Sub
これらのシンプルなチェック処理をマクロに組み込むだけで、予期せぬエラーを大幅に減らし、より堅牢で使いやすいツールを作成することができます。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
