Query mit auto aktu.
#1
Hallo zusammen,
ich habe eine Abfrage in meiner Excel datei die alle 3min im Hintergrund sich aktuallisiert.

Das funktioniert auch alles top Smile


aber wenn ich gerade in einer anderen Excel Datei arbeite und die Aktuallisierung dran ist springt die Datei immer in das tabellenblatt wo die Abfrage ist.
ich hätte gerne das er bei der Hauptseite bleibt.

Wenn ich die Liste offen und aktiv habe funktioniert das so
Antworten Top
#2
Da wirst du wohl das Hauptworkbook explizit referenzieren müssen. Mehr gibts wenn du Code zeigst Smile
Antworten Top
#3
das wäre der code Smile

Code:
    ActiveWorkbook.Queries.Add Name:="Table 8", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Web.Page(Web.Contents(""XXXXXXXXTESTXXXXXXXXX""))," & Chr(13) & "" & Chr(10) & "    Data8 = Quelle{8}[Data]," & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"" = Table.TransformColumnTypes(Data8,{{""Gruppenname"", type text}, {""Ges"", Int64.Type}, {""Akt"", Int64.Type}, {""Pre"", Int64.Type}, {""Q"", Int64.Type}, {""InS"", Int64.Type}, {""Err"", Int64.Type}, {""InS %" & _
        """, Percentage.Type}, {""Err %"", Percentage.Type}, {""Ges2"", Int64.Type}, {""Frei"", Int64.Type}, {""Bes"", Int64.Type}, {""Post"", Int64.Type}, {""Pause"", Int64.Type}, {""Aktion"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"""
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 8"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Table 8]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 3
        .PreserveColumnInfo = False
        .ListObject.DisplayName = "Table_8"
        '.refresh BackgroundQuery:=False
    End With
   
Antworten Top
#4
Na also, mache überall aus ActiveWorkbook ThisWorkbook und aus ActiveSheet machst du Sheet("Der Name deines Sheets in dem der Code ausgeführt werden soll") fertig
[-] Folgende(r) 1 Nutzer sagt Danke an Janush für diesen Beitrag:
  • Enclave
Antworten Top
#5
Das ist so einfach und logisch das ist mir peinlich das ich da nicht drauf gekommen bin
Danke ^^
Antworten Top
#6
okay, zu früh gefreut.

oder hab ich etwas vergessen/übersehen?

Code:
    ThisWorkbook.Queries.Add Name:="Table 8", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Quelle = Web.Page(Web.Contents(""htest12345/alo/agentUI_Supervisor.jsf""))," & Chr(13) & "" & Chr(10) & "    Data8 = Quelle{8}[Data]," & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"" = Table.TransformColumnTypes(Data8,{{""Gruppenname"", type text}, {""Ges"", Int64.Type}, {""Akt"", Int64.Type}, {""Pre"", Int64.Type}, {""Q"", Int64.Type}, {""InS"", Int64.Type}, {""Err"", Int64.Type}, {""InS %" & _
        """, Percentage.Type}, {""Err %"", Percentage.Type}, {""Ges2"", Int64.Type}, {""Frei"", Int64.Type}, {""Bes"", Int64.Type}, {""Post"", Int64.Type}, {""Pause"", Int64.Type}, {""Aktion"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Geänderter Typ"""
    With ThisWorkbook.Sheets("ALO2").ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 8"";Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [Table 8]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 3
        .PreserveColumnInfo = False
        .ListObject.DisplayName = "Table_8"
        '.refresh BackgroundQuery:=True
    End With
   
   
Antworten Top
#7
Was genau funktioniert nicht? Es kann sich eigentlich nicht genau wie vorher verhalten. Ich könnte mir vorstellen, dass du deine Source und eventuell deine Query weiter spezifizieren musst.



Vielleicht reicht auch schon die Destination zu ThisWorkbook.Sheet("xyz").Range("$A$1") zu ändern.


Code:
With ThisWorkbook.Sheets("ALO2").ListObjects.Add(SourceType:=0, Source:= _

        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 8"";Extended Properties=""""", Destination:=Range("$A$1")).QueryTable

        .CommandText = Array("SELECT * FROM [Table 8]")
Antworten Top
#8
naja wenn ich die datei offen habe ist alles schick und alles wird im hintergrund gemacht.

wenn ich eine andere offen habe und darin arbeite springt aber die gemeinte datei auf das sheet wo die Abfrage ist und aktualisiertsich und bleibt in dem sheet stehen.

ich möchte aber das sich die Abfrage aktualisiertund ich auf meinem "haupt" sheet bleibe auch wenn die datei nicht aktiv ist.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste