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

Dynamischer Datenbankabruf

Dynamischer Datenbankabruf
01.02.2014 15:29:19
Oliver
Hallo
ich möchte einen dynamischen Datenbankabruf mittel Shortcut oder Button erstellen.
In einer Tabelle befinden sich eine Reihe von Datensätzen mit einer eindeutigen ID.
Mit diesem Link werden ab der ID 227763 alle danach befindlichen Datensätze importiert.
http://www.fseconomy.net/data?userkey=9FWFFMUIC9&format=xml&query=payments&search=id&readaccesskey=9FWFFMUIC9&fromid=227763
Nach dem Import ist die höchste ID zum Beispiel 227790 und der nächste Abruf müsste ab ID 227791 erfolgen.
Die kann man sowas automatisieren (auf Knopfdruck)
Danke für Tipps Oliver

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

Betreff
Datum
Anwender
Anzeige
AW: Dynamischer Datenbankabruf
05.02.2014 10:35:37
fcs
Hallo Oliver,
im Prinzip kann man die Datenabfrage per Makro machen.
Ob man auch die nächste ID automatisch ermitteln kann hängt davon ab, ob die letzte/höchste ID irgendwie gefunden werden kann. Dann kann man die Input-Box-Eingabe durch eine entsprechende Suche ersetzen.
Das Makro bitte probieren, wenn im Excelfenster ein leeres Tabellenblatt angezeigt wird.
Ich konnte es nicht mit deinem Link testen, aber es hat mit anderen Links funktioniert.
Gruß
Franz
'Erstellt unter Excel 2010
Sub GetData_from_fseconomy_net()
Dim strURL As String, strID As String
strID = InputBox("Bitte die Start-ID für die Datenabfrage eingeben", _
Title:="D A T E N A B F R A G E - www.fseconomy.net", _
Default:="000001")
If strID = "" Then Exit Sub
strURL = "http://www.fseconomy.net/data?userkey=9FWFFMUIC9&format=xml&" & _
"query=payments&search=id&readaccesskey=9FWFFMUIC9&fromid=" & strID
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & strURL, Destination:=Range("$A$1"))
.Name = "Import_aus_Netz"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub

Anzeige
AW: Dynamischer Datenbankabruf
07.02.2014 08:13:24
Oliver
Hallo Franz,
vorab erst einmal vielen Dank. Das Makro klappt soweit prima - einziger Wermutstropfen ist die Position, an der das Abfrageergebnis eingefügt wird. Kann man das auf die aktuelle Zellposition setzen?
So hätte man zwei Fliegen mit einer Klappe geschlagen...
1. Die Datenbank würde sich verlängern, ohne dass man die 'Neuzugänge erst großartig kopieren/ verschieben muss...
2. Man hat die letzte ID direkt im Blickfeld und kann in das Eingabefeld die nächsthöhere Nummer eintragen....
Vielen lieben Dank, das Makro ist eine tolle Hilfe :-)
Oliver Pohl

Anzeige
AW: Dynamischer Datenbankabruf
07.02.2014 11:22:42
fcs
Hallo Oliver,
die Einfüge-Zelle anzupassen ist kein Problem
  With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & strURL, Destination:=Activecell)

Die aktive Zelle sollte aber nioch bzgl. Spalte und Inhalt überprüft werden.
Und man kann ggf. die nächst höhere ID aus der vorherigen Zeile ermitteln.
Gruß
Franz
Sub GetData_from_fseconomy_net()
Dim strTitel As String
Dim strURL As String, strID As String, wks As Worksheet
strTitel = "D A T E N A B F R A G E - www.fseconomy.net"
'aktive Zelle prüfen.
With ActiveCell
If .Column  1 Then 'Spalte A - 1 ggf. anpassen wenn andere Spalte
If MsgBox("Aktive Zelle ist nicht in Spalte A" & vbLf _
& "Trotzdem Import starten?", vbQuestion + vbOKCancel + vbDefaultButton2, _
strTitel) = vbCancel Then Exit Sub
End If
If .Text  "" Then 'aktive Zelle ist nicht leer
If MsgBox("Aktive Zelle ist nicht leer" & vbLf _
& "Trotzdem Import starten?", vbQuestion + vbOKCancel + vbDefaultButton2, _
strTitel) = vbCancel Then Exit Sub
End If
End With
'Nächste ID-Nr. aus vorheriger Zeile ermitteln
strID = Format(Val(ActiveCell.Offset(-1, 0).Text) + 1, "0") 'den Spaltenindex im Offset ggf  _
anpassen
'Inputbox zur Bestätigung/Änderung/Abbruch anzeigen
strID = InputBox("Bitte die Start-ID für die Datenabfrage eingeben", _
Title:=strTitel, Default:=strID)
If strID = "" Then Exit Sub 'Abbrechen wurde gewählt
strURL = "http://www.fseconomy.net/data?userkey=9FWFFMUIC9&format=xml&" & _
"query=payments&search=id&readaccesskey=9FWFFMUIC9&fromid=" & strID
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;" & strURL, Destination:=ActiveCell)
.Name = "Import_aus_Netz" & Format(Now, "YYYYMMDDhhmmss")
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlAllTables
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
'Abfrage nach dem Import sofort wieder löschen - diese Anweisung ggf. löschen
ActiveWorkbook.Connections(ActiveWorkbook.Connections.Count).Delete
End Sub

Anzeige
AW: Dynamischer Datenbankabruf
08.02.2014 09:36:33
Oliver
Hallo Franz,
es ist perfekt - ich weiß nicht, was ich sagen soll....
DANKE!!!!!! :-)
Oliver

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige