Function GetSheetNames(ByVal excelFile As String) As String() Dim sheetNames() As String Const adUseClient As Long = 3& Const adSchemaTables As Long = &H14& Dim cn As Object, rs As Object Set cn = CreateObject("ADODB.Connection") cn.Provider = "Microsoft.ACE.OLEDB.12.0" cn.Properties("Extended Properties") = "Excel 12.0;HDR=NO;IMEX=1" cn.Open excelFile Set rs = cn.OpenSchema(adSchemaTables) 'ADOX を使わずにスキーマを取得 ReDim sheetNames(1 To rs.RecordCount) Dim idx As Long idx = 0& Do Until rs.EOF idx = idx + 1& sheetNames(idx) = rs.Collect("TABLE_NAME") If sheetNames(idx) Like "*$" Then '末尾の $ を除去 sheetNames(idx) = Left(sheetNames(idx), Len(sheetNames(idx)) - 1) End If rs.MoveNext Loop rs.Close cn.Close Set GetSheetNames = sheetNames End Function