こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excel2007 queryの有無の確認

ExcelでシートにQueryがあるかどうかを
Sheets().QueryTables.Count > 0
で確認していました。
旧バージョンのExcelでは、上記での記述で確認がとれたのですが
Excel2007では仕様が変わっているのか、
Queryがある状態でも"0"となってしまい、
確認が取れなくなってしまいました。
Excel2007で記述を変える必要があるのでしょうか?
もしくは、Excel2007で動作する他の記述などご存じの方
教えて頂けないでしょうか。

投稿日時 - 2008-09-11 12:02:10

QNo.4320409

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

Excel2007では少し仕様が変わり、QueryTableではなくListObjectが挿入されるようになりました。QueryTableへの参照はListObjectが持っています。以下のようにすれば目的のQueryTableを取得することができます。

set qt = Sheets(0).ListObject(0).QueryTable

この部分さえ書き換えれば、QueryTableオブジェクトを操作する他のコードはそのまま利用できると思います。

投稿日時 - 2010-02-24 19:25:49

ANo.2

ANo.1です。
Excel2007以前とはちょっと違うみたいです。
とりあえず調べてみた結果です。
ThisWorkbook.Connections.Count
で接続の数は表示できるようです。
ThisWorkbook.Connections(1).Ranges(1).Address(external:=true)
とかでどのシートに接続してるかわかるみたいですが、「このシートに接続してるのは?」とかはわかりませんでした。
これ以上は他の人にお任せします、すみません。

投稿日時 - 2008-09-11 19:08:59

お礼

ご回答ありがとうございます。
ヒントになります。
また、いろいろ研究してみます。

投稿日時 - 2008-09-15 10:43:55

ANo.1

Excel2007でもQueryがある場合は
Sheets("Sheet1").QueryTables.Count
は1とかになります。
ただ
Sheets("Sheet1").QueryTables.Count > 0
は0ではなくTrueになります。
シート名がSheet1だった場合、
Sub test()
If Sheets("Sheet1").QueryTables.Count > 0 Then
MsgBox "Queryあり"
Else
MsgBox "Queryなし"
End If
End Sub
を実行しても正しい答えが得られませんか?

投稿日時 - 2008-09-11 13:21:57

補足

ご回答ありがとうございます。

アドバイス頂いた内容を実施してみたところ、
"Queryなし"となってしまいます。
Queryがあると思っていますが、何か違っているのでしょうか。
クイックアクセスバーの[データ]タブで[接続]をクリックすると、
「ブックの接続」で[名前]なども表示されます。
また、[このブックで接続を使用する位置]では
 [シート]:Sheet1
 [名前]:テーブル・・・
 [場所]$A$1:・・・
というふうに表示されて確認できているのですが。

投稿日時 - 2008-09-11 17:17:09

あなたにオススメの質問