Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1508to1512
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

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

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

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige