はじめに
今回は、同名のブックが開かれているかを確認する方法をご紹介します。
ブック名のチェック時に注意すべき点や、その対処法もご紹介します。
この記事を読むメリット
- 同名のブックが開かれているかを確認する方法が分かります
- 新規ブックに対してチェックする際の注意点も解説します
- コピペで使える実践的なコードを掲載しています
前提
同名のブックが開かれているかを確認する場合、ブック名を取得して確認します。
その場合注意しなければならない点として、新規ブックは拡張子を持たない点が挙げられます。
以下画像の赤枠箇所を取得してチェックするのですが、以下が保存済みブックと新規ブックの違いです。
サンプルコード
同名のブックが開かれているかを確認(ブック名のチェック)
拡張子もチェック対象に含めるパターンと、含めないパターンの2パターンのサンプルをご紹介します。
使用用途に合わせて使い分けを実施してください。
拡張子を含めてチェックする(新規ブックを勘案しない)
サンプルコード
Public Sub checkOpenBookName()
Dim wb As Workbook ' Workbookオブジェクト
Dim checkBookName As String ' チェック対象ブック名
' チェック対象のブック名を設定
checkBookName = "vba-hack.xlsm"
' 全てのブック分ループ
For Each wb In Workbooks
If wb.Name = checkBookName Then
' ブック名がチェック対象ブック名と同名である場合
MsgBox wb.Name & "が開かれています", vbExclamation
Exit For
End If
Next wb
End Sub
拡張子を含めずチェックする(新規ブックを勘案する)
サンプルコード
Public Sub checkOpenBookNameForExcludeExtension()
Dim fso As New FileSystemObject ' FileSystemObjectインスタンス
Dim wb As Workbook ' Workbookオブジェクト
Dim checkBookName As String ' チェック対象ブック名
' チェック対象のブック名を設定
checkBookName = "Book1"
' 全てのブック分ループ
For Each wb In Workbooks
If fso.getBaseName(wb.Name) = fso.getBaseName(checkBookName) Then
' ブック名がチェック対象ブック名と同名である場合
MsgBox fso.getBaseName(wb.Name) & "が開かれています", vbExclamation
Exit For
End If
Next wb
End Sub
りゅう
FileSystemObjectの参照設定を実施してください。
設定方法は以下の記事にて紹介しています。
また、FileSystemObjectのGetBaseNameプロパティを使用しています。
そちらの参考記事もよろしければご参照ください。
【Excel VBA】FileSystemObjectの設定と使い方
FileSystemObjectの設定や使い方について解説します。オブジェクトの構成から設定方法を画像付きで掲載しています。
【Excel VBA】ファイルパスからファイル名を取得する(GetFileName/GetBaseName/GetExtensionName)
ファイルパスからファイル名を取得する方法をサンプルコード付きで解説しています。拡張子を取得する・しない、FSOを使用する・しないパターンをそれぞれ紹介。
最後に
今回は、同名のブック名が開かれているかを確認する方法をご紹介しました。
本記事が、皆さんのお力になれば幸いです!
オススメの書籍
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)
2,640 円
本書籍では、可読性を向上させる基礎が詰まっています。
ExcelVBAでは使い捨てのコードを量産させがちですが、結果的に不具合の温床となってしまいます。プログラミングをする全ての方に読んで頂きたい1冊です!
コメント