Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


32012 / 76734 ←次へ | 前へ→

【49961】Re:保存してあるxlsファイルのシート名は?
発言  ichinose  - 07/6/30(土) 22:27 -

引用なし
パスワード
   ▼ベナジザ さん:
こんばんは。

>
>保存してある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

4 hits

【49960】保存してあるxlsファイルのシート名は? ベナジザ 07/6/30(土) 20:12 質問
【49961】Re:保存してあるxlsファイルのシート名は? ichinose 07/6/30(土) 22:27 発言
【50113】Re:保存してあるxlsファイルのシート名は? ベナジザ 07/7/9(月) 22:53 質問
【50114】Re:保存してあるxlsファイルのシート名は? かみちゃん 07/7/9(月) 23:11 発言
【50116】Re:保存してあるxlsファイルのシート名は? ベナジザ 07/7/10(火) 0:38 質問

32012 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free