|
▼ベナジザ さん:
こんばんは。
>
>保存してある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
|
|