Excelファイルを開かずにシート名をチェック
多くのExcelファイルから、特定のシート名のデータを取得する場合、
当該シートが存在していないブックがあるならば、ブックを開く前にシートの存在をチェックしたくなります。
こちらでの掲載コードの応用版になります。
指定の名称のシートがあるかどうかを判定するFunctionを作成します。
Private Function SheetExist(ByVal sFile As String, ByVal sName As String) As Boolean
Dim objCn As New ADODB.Connection
Dim objRS As ADODB.Recordset
Dim sSheet As String
SheetExist = False
On Error Resume Next
With objCn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Properties("Extended Properties") = "Excel 12.0"
.Open sFile
Set objRS = .OpenSchema(ADODB.adSchemaTables)
End With
If Err.Number = 0 Then
sName = Replace(sName, "!", "_")
sName = Replace(sName, ".", "#")
Do Until objRS.EOF
sSheet = objRS.Fields("TABLE_NAME").Value
If Right(sSheet, 1) = "$" Or Right(sSheet, 2) = "$'" Then
If Right(sSheet, 1) = "$" Then
sSheet = Left(sSheet, Len(sSheet) - 1)
End If
If Right(sSheet, 2) = "$'" Then
sSheet = Left(sSheet, Len(sSheet) - 2)
End If
If Left(sSheet, 1) = "'" Then
sSheet = Mid(sSheet, 2)
End If
sSheet = Replace(sSheet, "''", "'")
If sName = sSheet Then
SheetExist = True
Exit Do
End If
End If
objRS.MoveNext
Loop
End If
objRS.Close
objCn.Close
Set objRS = Nothing
Set objCn = Nothing
On Error GoTo 0
End Function
※「参照設定」で「Microsoft ActiveX Data Objects 2.X
Library」を追加して下さい。
シート名の取得には、ADOでテーブル名を取得する方法を使っています。
取得したシート名は、
シート名$
'シート名$'
このようになっているので、'と$を削除します。
また、
シート名に'がある場合は、'がエスケープ処理されていますので、''を'に変換しています。
さらに、
シート名の!は、_に変換されているので、!は_としてシート名を判定しています。
シート名の.は、#に変換されているので、.は#としてシート名を判定しています。
Sub sample()
Dim sTemp As String
sTemp = "フルパスを指定"
If SheetExist(sTemp, "シート名") = False Then
MsgBox "シートはありません"
End If
End Sub
基本的にはお勧めするような技術ではありません。
Excelファイルを適切に作成し、適切なファイルに分割して管理する。
適切に管理されていれば、このような方法をとる必要性はあまりないはずです。
同じテーマ「マクロVBAサンプル集」の記事
CSVの読み込み方法(改の改)
CSVの読み込み方法(ジャグ配列)
CSVの読み込み方法(ジャグ配列)(改)
CSVの出力(書き出し)方法
UTF-8でCSVの読み書き(ADODB.Stream)
ADOでマスタ付加と集計(SQL)
ADOでマスタ更新(SQL)
ADOでCSVの読み込み(SQL)
ADOでテキストデータを集計する
Excelファイルを開かずにシート名を取得
Excelファイルを開かずにシート名をチェック
新着記事NEW ・・・新着記事一覧を見る
AI時代におけるRPAとVBAの位置づけ - 補完技術としての役割と未来 -|生成AI活用研究(2025-05-12)
スマートExcel|AI×Excel:AIと進化するExcelの新常識|生成AI活用研究(2025-05-11)
VBA開発の現場で生成AIはどう使う? そのメリットと潜むリスク|生成AI活用研究(2025-05-11)
CursorでVBAを直接?編集・実行できる環境構築について|生成AI活用研究(2025-05-10)
Geminiと100本ノック 17本目:重複削除(ユニーク化)|生成AI活用研究(5月10日)
Geminiと100本ノック 16本目:無駄な改行を削除|生成AI活用研究(5月6日)
AIがあればVBAはできる:セルに絵文字を入れる|生成AI活用研究(2025-05-07)
Geminiと100本ノック 15本目:シートの並べ替え|生成AI活用研究(5月6日)
Geminiと100本ノック 14本目:社外秘シート削除|生成AI活用研究(5月4日)
Geminiと100本ノック 13本目:文字列の部分フォント|生成AI活用研究(5月4日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.繰り返し処理(For Next)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.ひらがな⇔カタカナの変換|エクセル基本操作
6.RangeとCellsの使い方|VBA入門
7.メッセージボックス(MsgBox関数)|VBA入門
8.セルのクリア(Clear,ClearContents)|VBA入門
9.FILTER関数(範囲をフィルター処理)|エクセル入門
10.条件分岐(Select Case)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBAサンプル集
- Excelファイルを開かずにシート名をチェック
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。