dポイントプレゼントキャンペーン実施中!

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

A 回答 (3件)

Excel2007では少し仕様が変わり、QueryTableではなくListObjectが挿入されるようになりました。

QueryTableへの参照はListObjectが持っています。以下のようにすれば目的のQueryTableを取得することができます。

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

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

ANo.1です。


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

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

お礼日時:2008/09/15 10:43

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
を実行しても正しい答えが得られませんか?

この回答への補足

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

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

補足日時:2008/09/11 17:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!