【ExcelVBA】ブックを開かないでワークシート名を抽出

ADOXの操作,ExcelVBA,シートの操作

ブックを開かないでワークシート名を取得します。
ただし、ワークシート名に記号('!$)等が使われている場合は、そのワークシート名に関しては正しく取得できません。
これらの記号が使われることはあまりないと思うのですが、ご注意ください。

ADOX 関連ライブラリーの有効化

必要になるADOX関連のライブラリーになります。
Microsoft ActiveX Data Objects x.x Library

  1. マクロの編集画面(Microsft Visual Basic for Applications)を開く。
  2. 画面上部の「ツール」→「参照設定」
  3. 「Microsoft ActiveX Data Objects x.x Library」有効化する。

ワークシート名の全部をイミディエイト画面に表示

イミディエイト画面に、全てのワークシート名を表示する。
Sub Sample()
    Dim objCN As New ADODB.Connection
    Dim objRS As ADODB.Recordset
    Dim sFile As String
    Dim sSheet As String
  
    sFile = "E:\SAMPLE\TEST.xlsx"
    
    With objCN
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .Properties("Extended Properties") = "Excel 12.0"
        .Open sFile
    End With
  
    Set objRS = objCN.OpenSchema(ADODB.adSchemaTables)
        
    Do Until objRS.EOF
        sSheet = objRS.Fields("TABLE_NAME").Value
        
        If Right(sSheet, 1) = "$" Or Right(sSheet, 2) = "$'" Then
          sSheet = Replace(sSheet, "$", "")
          sSheet = Replace(sSheet, "'", "")
          Debug.Print sSheet
        End If
        objRS.MoveNext
    Loop
    
    objRS.Close
    objCN.Close
    Set objRS = Nothing
    Set objCN = Nothing
End Sub


ブックを開かないでセルのデータを抽出

ExecuteExcel4Macro メソッドを使用して、ブックを開くことなく、セルのデータを読み込む方法です。

詳しくは記事:【ExcelVBA】ブックを開かないでセルのデータを抽出