VBでExcelをADOで開いた時、名前以外でテーブルを指定するには?

解決


まりゅ  2004-09-17 04:49:29  No: 85611

まだまだ初心者です。
VBで、ExcelをADOで開く事には成功したのですが、テーブル名を

SQL = "SELECT * FROM [" & sheet(1) & "$] "

のように、シート名ではなく、一番最初のシートを持ってきたいのです。
シート名が変わってしまうので名前ではもってこれないのですが、何か
いい方法ないでしょうか?よければご教授ください。お願いします。


あん  2004-09-17 20:22:58  No: 85612

1番最初のシート名がとれればいいのかな?
それなら
Sheets(1).Nameで取得できますよ。
実際のエクセルへの操作方法は
調べてね


まりゅ  2004-09-22 00:19:20  No: 85613

返信遅くなって申し訳ありません。
Sheets(1).Name  
と言うのはExcel起動して取得する方法でしょうか?

一度私の作ってみたプログラムを乗せてみます。

Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset

    Set CN = New ADODB.Connection

    CN.ConnectionString= "Provider=Microsoft.Jet.OLEDB.4.0;
                            DataSource=C:\TEST\test.xls;
                          Extended Properties= 
                          " & """" & "Excel 8.0;HDR=NO;" & """"  
    CN.Open

    SQL = "SELECT * FROM [テストシート$] "  '←  ※
    Set RS = New ADODB.Recordset
    RS.CursorLocation = adUseClient
    RS.Open SQL, CN, 0

    ※の部分の[テストシート$]を一番最初のシートにしたいのです。
      見よう見まねで作ったので、名前で指定するしか方法がわかりません。    
    
    事前に一番最初のシート名を取得するしかないのでしょうか?
    説明不足で申し訳ありません。
    よろしくお願いします。


魔界の仮面弁士  2004-09-22 10:38:43  No: 85614

> 一番最初のシートにしたいのです。
そのような指定方法は無かったかと思います。多分。
  「シート名」
  「シート名とセル範囲の組み合わせ」
  「Excelの[挿入]-[名前]-[定義]で登録された名前」
などであれば、指定可能ですけれども。

> 事前に一番最初のシート名を取得するしかないのでしょうか?
ADOXを使って名前の一覧を得ることはできますが、
そのうちのどれが「最初のシート名」かという判断はできません。

この場合は、Excelをオートメーション操作した方が簡単かと思いますよ。
(実行環境に Microsoft Excel が必要になってしまいますけれどね)


まりゅ  2004-09-23 00:04:44  No: 85615

返信ありがとうございます。
勉強になりました。
>この場合は、Excelをオートメーション操作した方が簡単かと思いますよ。
始めはこの方法でやっていたのですが、遅いと言われたもので・・・。
後はこっちで少しでも早くなるよう努力したいと思います。
ありがとうございました。


むう  2004-09-23 01:29:59  No: 85616

最初のシート名を取得するところだけ先にオートメーションで実施し、
その後でADOでアクセスすればよいかもしれません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加