Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 8.1 Pro : Excel 2007)
シート名の取得
投稿日時: 20/03/05 18:37:52
投稿者: FILETUBE

前回はありがとうございました。
  もう1点お聞きします。 
  
  strFile = "C:\test\AA.xlsx"
 
   Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    cn.Provider = "Microsoft.ACE.OLEDB.12.0"
    cn.Properties("Extended Properties") = "Excel 12.0;HDR=YES;IMEX=1"
    cn.Open strFile
 
    strSQL = "SELECT * FROM [sheetA$A1:C100]"
    rs.Open strSQL, cn, adOpenKeyset, adLockReadOnly
 
   
  ここでstrFileの値はいろいろ変わるので、シート名をsheetAの固定ではなく 
  
    Worksheets(Worksheets.Count).Nameのように取得したいのです。
 
  2つの内2番目を取得。
  
  strSQL = "SELECT * FROM vKMK$A1:C100]"
 
  上記のような場合、どのようにvKMKにシート名をセットするのでしょうか。
 
  わかる方おられましたら、教えて頂けないでしょうか。
  宜しくお願いします。

回答
投稿日時: 20/03/05 22:51:03
投稿者: WinArrow
投稿者のウェブサイトに移動

>2つの内2番目を取得。
の意味がよくわかりませんでしたが、ようやくわかりました。
シートは2つあるので、2つ目のシートの名前を取得したい
という事でしたら
>Worksheets(Worksheets.Count).Name
のコードでよいでしょう。
で、取得する場所なんですが、SQL文の中で取得するより、
普通に開いて取得する方が楽かもしれません。
 
Dim vKMK As String
  strFile = "C:\test\AA.xlsx"
  With Woorkboks.Open(Filename:=strFile)
      vKMK = .Worksheets(.Worksheets.Count).Name
      .Close False
  End With
 

回答
投稿日時: 20/03/05 22:56:05
投稿者: WinArrow
投稿者のウェブサイトに移動

どうしてもブックとして開くことが、問題としてなるならば
↓のページにヒントがあります。
 
https://excel-ubara.com/excelvba5/EXCEL121.html

投稿日時: 20/03/06 08:08:04
投稿者: FILETUBE

 WinArrowさん、回答ありがとうございます。
 
分かりにくい説明で申し訳ありません。
できればブックを開きたくないので、参考になるサイト
試してみます。
 

投稿日時: 20/03/06 22:30:29
投稿者: FILETUBE

今回も大変お世話になり、ありがとうございました。
改めて VBAに驚きです。
 
ちょっと工夫するだけで、処理時間が
こうも違うとは。
 
今後もよろしくお願いします。