| 
    
     |  | ▼ベナジザ さん: こんばんは。
 
 >
 >保存してあるxlsシート名を把握する方法を教えてください。
 >
 >現在は保存してあるファイル名を把握した後、開きシート名を把握するというコードで処理していますが、より処理を早めるため、”把握したファイルを開く”を実施したくないのです。
 
 ファイルはオープンしていますよ!!
 ただ、Excelがブックとして、開かないだけです。
 
 処理が速いか否かは、試してみてください。
 
 標準モジュールに
 '==========================================================
 Sub test()
 Dim ans As Variant
 Dim nm As Variant
 ans = get_shtnm("D:\My Documents\sample.xls")
 '          ↑シート名を取得したいxlsファイルのフルパス
 For Each nm In ans
 MsgBox nm
 Next
 End Sub
 '==========================================================
 Function get_shtnm(ex_path As String) As Variant
 On Error Resume Next
 Dim cnt As Long
 Dim mcnt As Long
 Dim g0 As Long
 Dim g1 As Long
 Dim cat As Object
 Dim tbl As Object
 Set cat = CreateObject("ADOX.Catalog")
 cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & ex_path & ";Extended Properties=Excel 8.0"
 ReDim shtnm(1 To cat.Tables.Count)
 g1 = 0
 For Each tbl In cat.Tables
 mcnt = UBound(Split(tbl.Name, "$"))
 cnt = 0
 For g0 = 1 To Len(tbl.Name)
 If Mid(tbl.Name, g0, 1) = "$" Then
 cnt = cnt + 1
 If cnt <> mcnt Then
 shtnm(g1 + 1) = shtnm(g1 + 1) & Mid(tbl.Name, g0, 1)
 End If
 Else
 shtnm(g1 + 1) = shtnm(g1 + 1) & Mid(tbl.Name, g0, 1)
 End If
 Next
 g1 = g1 + 1
 Next
 Set cat = Nothing
 Set tbl = Nothing
 get_shtnm = shtnm()
 Erase shtnm()
 On Error GoTo 0
 End Function
 
 
 |  |