Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1892to1896
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Webdaten mit Makro verknüpfen

Webdaten mit Makro verknüpfen
08.08.2022 18:36:39
Willi
Hallo,
ich lade mir aus dem Internet Werte in eine Excel Datei. Diese Werte lasse ich automatisch aktualisieren. Was ich jetzt will, ist, daß bei jeder Aktualisierung ein in dieser Excel Datei befindliches Makro gestartet wird.
Ist das möglich?
Grüße
Willi

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webdaten mit Makro verknüpfen
09.08.2022 09:34:18
ChrisL
Hi Willi
Ich nehme an, die Daten werden mittels Webabfrage in eine formatierte "intelligente" Tabelle (ListObject) geladen.
Quelle:
https://stackoverflow.com/questions/26983053/how-to-call-macro-after-refresh-or-refresh-all-button-pressed
Modul: DieseArbeitsmappe

Dim qtevent As qtclass

Private Sub Workbook_Open()
Set qtevent = New qtclass
Set qtevent.HookedTable = ThisWorkbook.Worksheets("Tabelle1").ListObjects(1).QueryTable
End Sub
Modul: Klassenmodul (Menü Einfügen, Klassenmodul)
Das Modul umbenennen in qtclass

Private WithEvents qt As Excel.QueryTable

Public Property Set HookedTable(q As Excel.QueryTable)
Set qt = q
End Property

Private Sub qt_AfterRefresh(ByVal Success As Boolean)
Call MeinMakro
End Sub
cu
Chris
Anzeige
AW: Webdaten mit Makro verknüpfen
09.08.2022 09:43:41
Tobias
Hallo Willi,
bei Änderungen in den Daten geht es wohl auf jedenfall über das Worksheet_Change Ereignis, ansonsten könnte es über das TableUpdate Ereignis funktionieren wenn deine Tabelle in deinem Datenmodell vorhanden ist. Das ist aber aufgrund der dürftigen Vorinformationen nicht zu sagen.
Schöne Grüße
Tobias
AW: Webdaten mit Makro verknüpfen
09.08.2022 11:41:15
Willi
Hallo Tobias,
vielen Dank für die Antwort.
Es ging darum, daß ich Aktienkurse aktualisiert verarbeiten will. Meine Gedanke war, daß, wenn neue Daten aus dem Netz kommen, das Makro für die Verarbeitung automatisch startet.
Eine erste Lösung war dann, daß ich nach einer Aktualisierung* - geht ja automatisch, bzw. bei Start der Datei - jeweils abgefragt habe, ob sich ein Wert verändert hat und habe bei "JA" das zweite Makro gestartet. Etwas umständlich, funktioniert aber. Problem: letztendlich erzeugt man eine Endlosschleife, da sich ja ständig etwas ändert.
So habe ich die Einstellungen bei Daten-> Verbindungen -> Verbindungseigenschaten bei " Aktualisierung alle ... Minuten" nicht aktiviert und nur "Aktualierung bei Öffnen der Datei" angeklickt.
D.h. Datei starten, Werte werden dann aktualisiert und dann habe ich für das Makro einen STRG Befehl gesetzt und schon startet das Ganze. (Händisch natürlich)
Datei aufrufen -> (Daten werden aktualisiert s.o.) -> STRG Y -> die Berechnungen erfolgt.
Alternativ kann ich nun, da ich ein zweites Makro (Kurse) geschrieben habe auch wie folgt vorgehen (Datei bleibt z.B.längere Zeit offen, ggf über Stunden):
Datei ist aufrufen -> STRG A -> Makro (Kurse). Refreshed die Daten aus dem Netz und danach startet Makro 2. (Ggf. muß man eine Pause einbauen, damit ersteinmal alle Daten aus dem Netz gezogen wurden, bevor das zweite Makro startet).

Sub Kurse()
Sheets("Worksheet1").Select
ActiveWorkbook.RefreshAll
Application.GoTo Reference:="Kurse"
Application.Wait Now + TimeSerial(0, 0, 15)                               '15 Sekunden Pause
Makro2                                                                                       'Start des Verarbeitungsmakro
End Sub
Ich habe das so detailliert geschrieben, da ich nirgendwo eine Lösung gefunden hatte, wie man automatisiert refreshed, sondern im Gegenteil Aussagen, daß dafür keine Lösung bekannt sei. Daher hier meine Lösung. Ggf. hilft es jemanden weiter.
Gruß
Willi
Anzeige
AW: Webdaten mit Makro verknüpfen
09.08.2022 15:26:30
ChrisL
Hi Willi
Nett, dass du ein Feedback gibst, auch wenn es nicht an mich gerichtet ist ;)
Wenn du die Hintergrundaktualisierung in den Verbindungseigenschaften deaktivierst, kannst du auf die Pause verzichten.
Und wenn man will, kann man auch einen eigenen Aktualisierung-Loop bauen z.B.

Public NextTime As Date

Public Sub Intervall()
NextTime = Now + TimeValue("00:01:00")  'Zeitintervall festlegen
Application.OnTime NextTime, "Intervall"
ThisWorkbook.RefreshAll
Call Makro2
End Sub

Public Sub Abbruch()
if NextTime > Now then Application.OnTime NextTime, "Intervall", Schedule:=False
End Sub
cu
Chris
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige