2013-01-16 14 views
6

Excel VBA初心者はこちら。私は、私が閲覧している1枚のシートにあるクエリを更新するマクロが必要です。私はすでにリフレッシュマクロを持っていますが、常にリフレッシュしたいシート名を指定する必要があります。私が見ているシートにマクロを実行させることは可能ですか?ここではその中のマクロは、現在の状態だだ:Excel VBA選択したシートを使用

Sub Refresh_Query() 
Sheets("Sheet1").Select 
Range("B6").Select 
Selection.QueryTable.Refresh BackgroundQuery:=False 
End Sub 

答えて

7

次のような、ActiveSheet.Nameを使用したい:OPがあいまいである

Sub Refresh_Query() 
    Sheets(ActiveSheet.Name).Select 
    Range("B6").Select 
    Selection.QueryTable.Refresh BackgroundQuery:=False 
End Sub 
+0

パーフェクト。どうもありがとう。 – user1985112

2

これは動作するはずです:

Sub Refresh_Query() 
    ActiveSheet.QueryTables(1).Refresh BackgroundQuery:=False 
End Sub 
+0

上のすべてのクエリテーブルを更新するだけで1つのクエリテーブルの使用に

Sub RefreshOneQuery() Dim qt As QueryTable On Error Resume Next ' in case there is no qt containing cell B6 Set qt = Range("B6").QueryTable On Error GoTo 0 If Not qt Is Nothing Then qt.Refresh BackgroundQuery:=False End If End Sub 

を更新するには-1 ActiveSheetにはクエリテーブルプロパティを持っていません。それは、ActiveSheet.QueryTables(1)が機能するように、QueryTablesプロパティを持っています。 –

+0

ありがとう、@ダグ。それは分かりませんでした(明らかに)。この編集された答えは – chuff

+1

+1です。最初の質問と受け入れられた答えの中の「選択」は私からの冗長な – brettdj

0

:テキストに尋ねますアクティブなシート上のすべてのクエリテーブルをリフレッシュしますが、サンプルコードはセルを含む1つのクエリテーブルのみをリフレッシュします

シート使用

Sub RefreshAllQueries() 
    Dim qt As QueryTable 
    For Each qt In ActiveSheet.QueryTables 
     qt.Refresh BackgroundQuery:=False 
    Next 
End Sub 
関連する問題