Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten-Verbindungen dynamisch refreshen

Daten-Verbindungen dynamisch refreshen
23.08.2016 09:32:48
Burkhard
Hallo,
habe mir eine Tabelle zur Beobachtung und Kontrolle meines Börsen-Depots gebaut.
Die Kursdaten hole ich mir aus dem Internet (www.onvista.de).
Die Aktualisierung aller Kurstabellen / Datenverbindungen läuft derzeit über ein Makro mit "ActiveWorkbook.RefreshAll" - klappt soweit ganz gut.
Der nächste Entwicklungsschritt soll nun die Aktualisierung einzelner Kurstabellen sein. Dazu möchte ich gerne einen dynamischen Code auf der Basis von
ActiveWorkbook.Connections("DE0008481763").Refresh
einsetzen. Dabei soll die Datenverbindung dynamisch - z.B. durch den Doppelklick auf eine Zelle mit der jeweiligen ISIN / WKN - gesetzt werden.
Den Teil mit dem Doppelklick habe ich schon gelöst ("Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range)").
Der selektierte Wert steht in Target.Value ... aber wie bekomme ich den in die Connections-Anweisung? Stehe gerade etwas auf dem Schlauch ...
Vorab schon mal Danke für die Unterstützung
Burkhard
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Daten-Verbindungen dynamisch refreshen
23.08.2016 10:21:18
Luschi
Hallo Burkhard,
ich benutze ab Excel 2010 das M$-AddIn 'PowerQuery', Dadurch werden die abgefragten Werte in _ eine formatierte Tabelle (Vba: 'ListObject') geschrieben. Das Aktualisieren erfolgt dann so bei Doppelklick in 1e Zelle dieses Objektes:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim lstObj As ListObject, s As String
On Error Resume Next
Set lstObj = Target.ListObject
On Error GoTo 0
If Not (lstObj Is Nothing) Then
Cancel = True
lstObj.QueryTable.BackgroundQuery = False
lstObj.QueryTable.Refresh
MsgBox "fertig"
End If
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Daten-Verbindungen dynamisch refreshen
23.08.2016 10:42:35
Burkhard
Hallo Luschi,
dieses Add-In kenne ich bisher nicht ... werde ich mir also mal ansehen. Danke für den Tipp ...
Viele Grüße nach Klein-Paris
Burkhard
AW: Daten-Verbindungen dynamisch refreshen
23.08.2016 17:27:11
Burkhard
Hallo Luschi,
habe mir das Add-In Power Query geladen ... sieht toll aus das Tool. Da meine Lösung schon eine Weile läuft müsste ich alle bestehenden Queries m.E. neu aufbauen - und das mache ich dann bei meiner Lösung Version 2 :-) Oder kann ich die bestehenden Queries einer Mappe dort irgendwie einbinden?
Vielleicht kannst Du mir ja aber auch mit einem anderen Beispiel-Code weiterhelfen.
Dazu mal mein Modell - meine Mappe enthält
  • ein zentrales Blatt DEPOT. Auf diese Blatt sind alle Depot-Positionen eingetragen und durch die ISIN in der Sparte A:A beschrieben

  • für jede ISIN gibt es ein eigenes Blatt ISIN. Dort werden die Kurse seit einem Stichtag per Query (URL www.onvista.de) bereitgestellt

  • die Datenverbindung für jede Query wurde von "Verbindungxxx" in "ISIN" umbenannt.

  • Einfach gesagt - eine ISIN (auf Blatt DEPOT) verweist auf Blatt ISIN welches durch eine Verbindung ISIN aktualisiert wird :-)
    Und nun möchte ich per Doppelklick auf die ISIN im Blatt DEPOT die Kursabfrage starten ... und nicht immer alle Queries aktualisieren müssen. Und das müsste ja mit
    ActiveWorkbook.Worksheet("DE0008481763").Connections("DE0008481763").Refresh
    
    funktionieren. Aber wie bekomme ich die Zeichenstrings durch eine Variable ersetzt ...? Da hänge ich nun schon seit geraumer Zeit ...
    Viele Grüße
    Burkhard
    Anzeige
    AW: Daten-Verbindungen dynamisch refreshen
    23.08.2016 18:31:48
    Luschi
    Hallo Burkhard,
    wenn das so ist, wie Du es beschrieben hast, dann sollte doch das hier reichen:
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Bereichsangabe anpassen!
    If Not (Intersect(Range("A5:A55"), Target) Is Nothing) Then
    Cancel = True
    ThisWorkbook(Target.Value).Connections(Target.Value).Refresh
    End If
    End Sub
    
    Dabei wird auf den doppelklick nur agiert, wenn er in Bereich der aktiven Tabellenseite 'DEPOT' in oben angegebenen Bereich liegt.
    Gruß von Luschi
    aus klein-Paris
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige
    Anzeige

    Infobox / Tutorial

    Dynamisches Refreshen von Daten-Verbindungen in Excel


    Schritt-für-Schritt-Anleitung

    Um Daten-Verbindungen in Excel dynamisch zu aktualisieren, kannst Du die folgenden Schritte befolgen:

    1. Erstelle eine Tabelle für Deine Börsen-Daten, in der Du die ISINs (z.B. DE0008481763) auflistest.

    2. Füge ein VBA-Makro hinzu, das die Aktualisierung der Datenverbindungen steuert. Öffne den VBA-Editor mit ALT + F11.

    3. Füge den folgenden Code in das entsprechende Arbeitsblattmodul (z.B. für das Blatt "DEPOT") ein:

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
         Dim connName As String
         connName = Target.Value ' Hier wird der Wert der ISIN verwendet
      
         On Error Resume Next ' Fehlerbehandlung aktivieren
         ActiveWorkbook.Connections(connName).Refresh ' Datenverbindung aktualisieren
         On Error GoTo 0 ' Fehlerbehandlung zurücksetzen
      
         MsgBox "Die Daten für " & connName & " wurden aktualisiert."
         Cancel = True ' Doppelklick annulieren, um keine Zelle zu bearbeiten
      End Sub
    4. Teste das Makro, indem Du auf eine Zelle mit einer ISIN doppelklickst. Dadurch sollte die entsprechende Datenverbindung aktualisiert werden.


    Häufige Fehler und Lösungen

    • Fehler: "Verbindung nicht gefunden"

      • Stelle sicher, dass der Name der Verbindung exakt mit dem in der Zelle übereinstimmt. Groß- und Kleinschreibung sind relevant.
    • Fehler: "Zugriff verweigert"

      • Überprüfe die Berechtigungen Deiner Excel-Datei und stelle sicher, dass Du die Makros aktivieren kannst.
    • Daten werden nicht aktualisiert

      • Vergewissere Dich, dass die ISIN tatsächlich mit einer aktiven Datenverbindung verknüpft ist.

    Alternative Methoden

    Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch die Power Query-Funktion verwenden, um Daten dynamisch zu aktualisieren. Ab Excel 2010 kannst Du mit Power Query die Abfragen direkt in einer Tabelle verwalten und aktualisieren:

    1. Installiere das Power Query-Add-In (falls noch nicht geschehen).
    2. Erstelle eine Abfrage für Deine ISIN-Daten.
    3. Aktualisiere die Abfrage manuell oder automatisiere die Aktualisierung mit Doppelklick in der Tabelle.

    Praktische Beispiele

    Hier ein Beispiel, wie Du eine ISIN in Deiner Tabelle nutzen kannst:

    • In Zelle A1 steht "DE0008481763".
    • Der folgende Makro-Code aktualisiert die Verbindung automatisch, wenn Du doppelt auf die Zelle klickst:

      Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
         If Target.Address = "$A$1" Then
             ActiveWorkbook.Connections("DE0008481763").Refresh
             MsgBox "Daten für DE0008481763 aktualisiert."
             Cancel = True
         End If
      End Sub

    Tipps für Profis

    • Verwende Error Handling in Deinen VBA-Skripten, um unerwartete Fehler besser zu handhaben.
    • Nutze Hintergrundaktualisierungen in Power Query, um die Benutzeroberfläche nicht zu blockieren, während die Daten geladen werden.
    • Halte Deine Datenverbindungen und Abfragen organisiert, um die Wartung zu erleichtern.

    FAQ: Häufige Fragen

    1. Kann ich mehrere ISINs gleichzeitig aktualisieren?
    Ja, Du kannst eine Schleife in Dein VBA-Skript einfügen, um alle ISINs in einem bestimmten Bereich zu durchlaufen und die Aktualisierung durchzuführen.

    2. Was ist der Unterschied zwischen ActiveWorkbook.RefreshAll und ActiveWorkbook.Connections().Refresh?
    ActiveWorkbook.RefreshAll aktualisiert alle Datenverbindungen gleichzeitig, während ActiveWorkbook.Connections().Refresh spezifisch nur die angegebene Datenverbindung aktualisiert.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige