まだまだ初心者です。
VBで、ExcelをADOで開く事には成功したのですが、テーブル名を
SQL = "SELECT * FROM [" & sheet(1) & "$] "
のように、シート名ではなく、一番最初のシートを持ってきたいのです。
シート名が変わってしまうので名前ではもってこれないのですが、何か
いい方法ないでしょうか?よければご教授ください。お願いします。
1番最初のシート名がとれればいいのかな?
それなら
Sheets(1).Nameで取得できますよ。
実際のエクセルへの操作方法は
調べてね
返信遅くなって申し訳ありません。
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
※の部分の[テストシート$]を一番最初のシートにしたいのです。
見よう見まねで作ったので、名前で指定するしか方法がわかりません。
事前に一番最初のシート名を取得するしかないのでしょうか?
説明不足で申し訳ありません。
よろしくお願いします。
> 一番最初のシートにしたいのです。
そのような指定方法は無かったかと思います。多分。
「シート名」
「シート名とセル範囲の組み合わせ」
「Excelの[挿入]-[名前]-[定義]で登録された名前」
などであれば、指定可能ですけれども。
> 事前に一番最初のシート名を取得するしかないのでしょうか?
ADOXを使って名前の一覧を得ることはできますが、
そのうちのどれが「最初のシート名」かという判断はできません。
この場合は、Excelをオートメーション操作した方が簡単かと思いますよ。
(実行環境に Microsoft Excel が必要になってしまいますけれどね)
返信ありがとうございます。
勉強になりました。
>この場合は、Excelをオートメーション操作した方が簡単かと思いますよ。
始めはこの方法でやっていたのですが、遅いと言われたもので・・・。
後はこっちで少しでも早くなるよう努力したいと思います。
ありがとうございました。
最初のシート名を取得するところだけ先にオートメーションで実施し、
その後でADOでアクセスすればよいかもしれません。
ツイート | ![]() |