Discussion:
X Abfragen per VBA aktualisieren
(zu alt für eine Antwort)
Oliver Peters
2006-06-23 20:45:52 UTC
Permalink
Hallo da draußen,

ich hab X worksheets in einer Arbeitsmappe. In fast allen
worksheets hab ich eine Abfrage auf eine externe
Datentabelle. Während der Arbeit in Excel hab ich per VBA die
Möglichkeit geschaffen, die Datenbasis, auf der die Tabellen beruhen zu
verändern. Wie kann ich per VBA die Abfrage aktualisieren?

Danke für Tipps

Oliver
Oliver Peters
2006-06-23 21:15:05 UTC
Permalink
On Fri, 23 Jun 2006 22:45:52 +0200, Oliver Peters wrote:

Nochmals hallo,

[...]

ich hab mittlerweile dies gefunden:

Private Sub Erfrische()
Sheets("Tabelle1").QueryTables(1).Refresh
Sheets("Tabelle1").QueryTables(2).Refresh
'usw.
End Sub


Ich muß jedoch sagen, daß mir das zu umständlich ist, da die Anzahl der
worksheets nicht gleichbleibend ist - es muß doch die Möglichkeit geben,
über vom 1. bis zum letzten Blatt über die einzelnen Blätter zu gehen
und bei Vorhandensein die Abfragen (und Bezüge auf andere Blätter) zu
aktualisieren?

Nochmals

Danke für Tipps
Robert Jakob
2006-06-23 21:31:02 UTC
Permalink
Post by Oliver Peters
Hallo da draußen,
ich hab X worksheets in einer Arbeitsmappe. In fast allen
worksheets hab ich eine Abfrage auf eine externe
Datentabelle. Während der Arbeit in Excel hab ich per VBA die
Möglichkeit geschaffen, die Datenbasis, auf der die Tabellen beruhen zu
verändern. Wie kann ich per VBA die Abfrage aktualisieren?
Danke für Tipps
Oliver
Hallo Oliver,

leider kann ich noch nicht so richtig verstehen, was Du eigentlich machen
willst. Wenn Du mit VBA arbeitest, dann kannst Du doch jeden X-beliebigen
Tabelleinhalt abfragen wann immer Du willst.

Beschreibe mal etwas genauer, was Du eigentlich vor hast und dann werde ich
Dir eine Lösung mit VBA vorschlagen.

MfG
Robert
Oliver Peters
2006-06-23 21:45:18 UTC
Permalink
On Fri, 23 Jun 2006 23:31:02 +0200, Robert Jakob wrote:


Moin Robert,

[...]
Post by Robert Jakob
leider kann ich noch nicht so richtig verstehen, was Du eigentlich machen
willst. Wenn Du mit VBA arbeitest, dann kannst Du doch jeden X-beliebigen
Tabelleinhalt abfragen wann immer Du willst.
Bin kein VBA-(Programmier-)Profi, sondern quäl mich nur ein wenig, damit
ich (nach einer 1. Lernphase) Lösungen etwas zeitunaufwändiger gestalten
kann
Post by Robert Jakob
Beschreibe mal etwas genauer, was Du eigentlich vor hast und dann werde ich
Dir eine Lösung mit VBA vorschlagen.
Ich möchte eigentlich nur eine etwas professionellere Lösung für

Private Sub Erfrische()
Sheets("Tabelle1").QueryTables(1).Refresh
Sheets("Tabelle1").QueryTables(2).Refresh
'usw.
End Sub


In meiner Vorstellung muß ich weder die Tabellen noch die Abfragebereiche
in VBA benamsen, sondern EXCEL/VBA iteriert (?) einfach nur über die
vorhandenen sheets und aktualisiert, wenn ein wie auch immer benamstes
Query und evtl Bezüge auf andere Tabellenblätter (hab noch eigene
rechnende Spalten innerhalb des Bereiches der externen Daten


Gruß

Oliver
Claus Busch
2006-06-23 22:27:44 UTC
Permalink
Hallo Oliver,
Post by Oliver Peters
Ich möchte eigentlich nur eine etwas professionellere Lösung für
Private Sub Erfrische()
Sheets("Tabelle1").QueryTables(1).Refresh
Sheets("Tabelle1").QueryTables(2).Refresh
'usw.
End Sub
In meiner Vorstellung muß ich weder die Tabellen noch die Abfragebereiche
in VBA benamsen, sondern EXCEL/VBA iteriert (?) einfach nur über die
vorhandenen sheets und aktualisiert, wenn ein wie auch immer benamstes
Query und evtl Bezüge auf andere Tabellenblätter (hab noch eigene
rechnende Spalten innerhalb des Bereiches der externen Daten
eigentlich reicht dazu:

Private Sub Erfrische()
ActiveWorkbook.RefreshAll
End Sub
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Thomas Ramel
2006-06-24 04:19:17 UTC
Permalink
Grüezi Claus und Oliver

Claus Busch schrieb am 24.06.2006
Post by Oliver Peters
Post by Oliver Peters
Ich möchte eigentlich nur eine etwas professionellere Lösung für
Private Sub Erfrische()
Sheets("Tabelle1").QueryTables(1).Refresh
Sheets("Tabelle1").QueryTables(2).Refresh
'usw.
End Sub
In meiner Vorstellung muß ich weder die Tabellen noch die Abfragebereiche
in VBA benamsen, sondern EXCEL/VBA iteriert (?) einfach nur über die
vorhandenen sheets und aktualisiert, wenn ein wie auch immer benamstes
Query und evtl Bezüge auf andere Tabellenblätter (hab noch eigene
rechnende Spalten innerhalb des Bereiches der externen Daten
Private Sub Erfrische()
ActiveWorkbook.RefreshAll
End Sub
...nun habe ich den iterierenden Code schon beisammen, daher hier dennoh
die Zeilen, die einfach 'nur' die Querys aktualisieren:

Sub Refresh()
Dim wS As Worksheet
Dim qryAbfrage As QueryTable

For Each wS In ThisWorkbook.Worksheets
For Each qryAbfrage In wS.QueryTables
qryAbfrage.Refresh BackgroundQuery:=False
Next qryAbfrage
Next wS
End Sub


Mit freundlichen Grüssen
Thomas Ramel (@Laptop)
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Claus Busch
2006-06-24 08:53:49 UTC
Permalink
Hallo Thomas,
Post by Thomas Ramel
...nun habe ich den iterierenden Code schon beisammen, daher hier dennoh
Sub Refresh()
Dim wS As Worksheet
Dim qryAbfrage As QueryTable
For Each wS In ThisWorkbook.Worksheets
For Each qryAbfrage In wS.QueryTables
qryAbfrage.FillAdjacentFormulas = True
Post by Thomas Ramel
qryAbfrage.Refresh BackgroundQuery:=False
Next qryAbfrage
Next wS
End Sub
dein Code hat den Vorteil, dass man hier auch die berechneten Spalten
berücksichtigen kann.
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Thomas Ramel
2006-06-24 13:08:42 UTC
Permalink
Grüezi Claus

Claus Busch schrieb am 24.06.2006
Post by Claus Busch
Post by Thomas Ramel
...nun habe ich den iterierenden Code schon beisammen, daher hier dennoh
Sub Refresh()
Dim wS As Worksheet
Dim qryAbfrage As QueryTable
For Each wS In ThisWorkbook.Worksheets
For Each qryAbfrage In wS.QueryTables
qryAbfrage.FillAdjacentFormulas = True
Post by Thomas Ramel
qryAbfrage.Refresh BackgroundQuery:=False
Next qryAbfrage
Next wS
End Sub
dein Code hat den Vorteil, dass man hier auch die berechneten Spalten
berücksichtigen kann.
Danke für die 'Rettung der Ehre' :-)

Diese Variante war mir gar nicht eingefallen, obschon ich erst gestern
dieses Feature verwendet habe.


Mit freundlichen Grüssen
Thomas Ramel
--
- MVP für Microsoft-Excel -
[Win XP Pro SP-2 / xl2000 SP-3]
Microsoft Excel - Die ExpertenTipps:
(http://tinyurl.com/9ov3l und http://tinyurl.com/cmned)
Claus Busch
2006-06-24 13:49:05 UTC
Permalink
Hallo Thomas,
Post by Thomas Ramel
Post by Claus Busch
Post by Thomas Ramel
...nun habe ich den iterierenden Code schon beisammen, daher hier dennoh
Sub Refresh()
Dim wS As Worksheet
Dim qryAbfrage As QueryTable
For Each wS In ThisWorkbook.Worksheets
For Each qryAbfrage In wS.QueryTables
qryAbfrage.FillAdjacentFormulas = True
Post by Thomas Ramel
qryAbfrage.Refresh BackgroundQuery:=False
Next qryAbfrage
Next wS
End Sub
dein Code hat den Vorteil, dass man hier auch die berechneten Spalten
berücksichtigen kann.
Danke für die 'Rettung der Ehre' :-)
Diese Variante war mir gar nicht eingefallen, obschon ich erst gestern
dieses Feature verwendet habe.
dein Code hat mich auf die Idee gebracht, das noch einzufügen. Ist doch
schön, wenn man hier gemeinsam etwas löst und/oder verbessert.

Schönes Wochenende
--
Mit freundlichen Grüssen
Claus Busch

Win XP Prof SP2; Office 2000 SP3
claus_busch(at)t-online.de
Oliver Peters
2006-06-24 15:50:02 UTC
Permalink
Am Sat, 24 Jun 2006 15:49:05 +0200 schrieb Claus Busch:

Hallo,

[...]

Dank an alle, ich werd die Sache Montag auf der Arbeit gleich mal
ausprobieren (hier zuhause gibt's nur Ubuntu und OpenOffice - hoffentlich
hab ich mich mit meinem coming-out nun nicht zum Paria gestempelt ;-)).

Gruß

Oliver

Loading...