Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1732to1736
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

Abfrage via Excel möglich

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Da Abfrage nicht im Link parametrisierbar, ...
07.01.2020 10:19:02
lupo1
... geht das nicht.
Früher hatte man SendKeys ...
AW: ja, aber ...
07.01.2020 10:36:19
Fennek
Hallo,
Lupo hat natürlich Recht, aber versuchen kannst du es trotzdem:
Suche nach den "Post"-Parametern für die Anfrage, z.B. mit der Burb-Suite oder Wireshark.
Wenn Du die Übergabe-Parameter gefunden hast, kann man das nachbauen.
mfg
(nichts für Anfänger)
AW: ja, aber ...
07.01.2020 10:48:31
Zwenn
Hallo zusammen,
nach einem Blick in den HTML-Quellcode denke ich, man müsste die Seite auch über ihre Steuerelemente Fernbedienen können. Checkboxen für die Karten und das Dropdown für die Währungen haben nicht einmal Events. Als aufwändiger sehe ich da den Kalender. Die Felder werden zwar einfach über Links markiert, aber man muss erstmal analysieren, in welchem Feld (Zeile, Spalte) der erste eines Monats liegt.
Tagsüber habe ich keine Zeit. Aber vielleicht komme ich heute Abend dazu mir das mal genauer anzusehen. Vielleicht hat ja auch nich jemand einen anderen Ansatz.
Viele Grüße,
Zwenn
Anzeige
Vermutlich wird der Betreiber das aber bemerken ..
07.01.2020 10:51:40
lupo1
... und dieses Automatisierungsloch stopfen.
Onvista.de baut zu diesem Zweck auch laufend die Seite um, damit man als kostenlos-Nutzer keine Watchlists oder Portfolien auf Dauer importieren kann.
Ich würde =GOOGLEFINANCE() verwenden.
AW: Vermutlich wird der Betreiber das aber bemerken ..
07.01.2020 11:00:06
Zwenn
Das muss man ausprobieren. Es gibt in der Tat Seitenbetreiber, die automatisierte Zugriffe rigeros blocken. Google ist da ein sehr populärer Vertreter. Nach 10 automatisierten Zugriffen auf die Suchmaschine werden Captchas geschaltet. Die meisten Anbieter kümmern sich allerdings bisher noch nicht groß darum. Ebay hat die Erkennung sogar abgeschaltet. Am Ende kommt es auch mit darauf an, wieviele Abrufe in welchem Zeitraum erfolgen sollen. Bevor da was in den Logfiles auffällt muss das (je nach Seite) schon sehr umfangreich passieren.
Andere Quellen sollte man testen, wenn die gewünschte nicht praktikabel ist, die andere Quelle viel leichter anzuzapfen ist oder die Abrufe eben behindert werden. Man sollte sich auch immer die Frage stellen, ob es einen bestimmten Grund für genau die gewählte Quelle gibt.
Anzeige
Das mit Google stimmt, aber nicht GOOGLEFINANCE ..
07.01.2020 11:05:31
lupo1
... da dies eine Funktion innerhalb der Google-Tabellenkalkulation ist.
Trotzdem sollte man, wenn einem auf Dauer daran liegt, das Google-Blatt zur eigenen Sicherheit nicht übertrieben gestalten oder aufrufen. Denn möglich ist alles (z.B. die Einstufung als Vielnutzer oder gewerblich).
Ich habe alle wichtigen Aktienkurse eines Umfelds dort hinterlegt, um den Vermögensstand/-entwicklung jederzeit zu sehen.
AW: Das mit Google stimmt, aber nicht GOOGLEFINANCE ..
07.01.2020 11:09:28
Zwenn
Mit GoogleFinance habe ich selbst noch nie etwas gemacht. Wenn Du da entsprechende Erfahrungen hast ist das doch schonmal eine gute und gesicherte Erkenntnis. Bleibt nur die Frage, was der TE eigentlich vor hat. In welcher Weise soll das Makro mit den einzustellenden Parametern gefüttert werden und was soll mit den ausgelesenen Werten passieren?
Anzeige
Ich glaube, der sucht einfach nur Wechselkurse.
07.01.2020 11:29:50
lupo1
Der Anbieter ist schnurz.
AW: Das glaube ich nicht
07.01.2020 12:56:02
Charly
Hallo lupo1
Ich denke er such gezielt die Wechselkurse von
Visa oder Mastercard
oder
Visa und Mastercard
zu einem bestimmten- oder dem aktuellen Datum.
Gruss Charly
AW: Das glaube ich nicht
07.01.2020 14:11:06
michax
@Charly: Da liegst Du komplett richtig. :)
Ich provoziere gern TE-Rückmeldungen ...
07.01.2020 14:48:36
lupo1
... gelungen!
Abfrage via Excel möglich
07.01.2020 19:31:33
Anton
Hallo michax,
irgendwie so:
Code in Zwischenablage:

Sub daten_online()
  Dim IEApp As Object, al As Object, result As Object  
  Dim iTag As Integer, iRow As Integer, iCel As Integer    
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "https://misc.firstdata.eu/CurrencyCalculator/fremdwaehrungskurse/calendar"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  IEApp.Document.getelementsbyname("masterCardChecked")(0).Checked = True  
  IEApp.Document.getelementsbyname("visaChecked")(0).Checked = True  
  IEApp.Document.getelementbyid("Waehrung").Value = "CHF"  'Waehrung anpassen
  Set wert = IEApp.Document.getelementbyid("cal1Container")  
  For iTag = 1 To Day(Date - 1)   'vom 1. bis zum vorletzten Tag des Monats
    For Each al In wert.all  
      If al.innertext = CStr(iTag) Then  
        al.Click
        Exit For  
      End If  
    Next
  Next
  IEApp.Document.getelementbyid("id2").Click
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  Set result = IEApp.Document.getelementsbyclassname("resultsTable")(0)  
  If Not result Is Nothing Then    
    With ActiveSheet
      .Cells.Clear
      For iRow = 0 To result.Rows.Length - 1  
        For iCel = 0 To result.Rows(iRow).Cells.Length - 1  
          .Cells(iRow + 1, iCel + 1) = result.Rows(iRow).Cells(iCel).innertext
        Next
      Next
    End With  
  End If  
  IEApp.Quit
  Set IEApp = Nothing  
End Sub  

mfg Anton
Anzeige
Oder so ;-)
07.01.2020 21:34:50
Zwenn
Ist nur der Machbarkeitsnachweis, da nicht bekannt ist, was der TE eigentlich machen will.

Sub KreditKartenWechselKurseHolen()
Dim browser As Object
Dim url As String
Dim knotenInput As Object
Dim knotenDropdown As Object
Dim knotenKalender As Object
Dim knotenEven As Object
Dim knotenOdd As Object
Dim knotenAlleZellen As Object
Dim knotenEineZelle As Object
Dim htmlZeile As Long
Dim zeile As Long
Dim spalte As Long
'Start der Ausgabe in der Excel Tabelle
zeile = 2
spalte = 1
url = "https://misc.firstdata.eu/CurrencyCalculator/fremdwaehrungskurse/calendar"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
browser.navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Pauschal beide Haken in Checkboxen für Kreditkarten setzen
'Das sind die input-Tags mit den Indizes 2 und 3 in der NodeCollection
Set knotenInput = browser.document.getElementsByTagName("input")
knotenInput(2).Checked = True
knotenInput(3).Checked = True
'Währung in Dropdown wählen
'Hier exemplarisch Australische Dollar
Set knotenDropdown = browser.document.getElementByID("Waehrung")
knotenDropdown.selectedIndex = 10 'Australische Dollar
'Tag(e) im angezeigten Kalendermonat setzen
'Allen auswählbaren Tagen sind Links hinterlegt
'Erster Link = der 1. des Monats
'Hier exemplarisch der 1. und 6.
'Man kann auch durch die Monate navigieren,
'was hier aber weggelassen wurde
Set knotenKalender = browser.document.getElementsByClassName("m1 calbody")(0) _
.getElementsByTagName("a")
knotenKalender(0).Click
knotenKalender(5).Click
'Submit Button anklicken
'Ist das input-Tag mit dem index 4
knotenInput(4).Click
'Manuelle Pause, damit die Ergebnisseite komplett geladen wird
Application.Wait (Now + TimeSerial(0, 0, 3))
'Inhalt der Ergebnistabelle ab Zelle A1 in der Tabelle ausgeben,
'aus der das Makro getsartet wurde
'Die Werte stehen in als gerade und ungerade gekennzeichneten Zeilen
Set knotenEven = browser.document.getElementsByClassName("even")
Set knotenOdd = browser.document.getElementsByClassName("odd")
'Alle Zeilen der HTML Tabelle ausgeben
For htmlZeile = 0 To knotenEven.Length - 1
Set knotenAlleZellen = knotenEven(htmlZeile).getElementsByTagName("td")
For Each knotenEineZelle In knotenAlleZellen
Cells(zeile, spalte).Value = Trim(knotenEineZelle.innertext)
spalte = spalte + 1
Next knotenEineZelle
zeile = zeile + 1
spalte = 1
'Wenn es mindestens eine ungerade Zeile gibt
If Not knotenOdd Is Nothing Then
'Prüfen ob es noch eine gibt
If knotenOdd.Length > htmlZeile Then
Set knotenAlleZellen = knotenOdd(htmlZeile).getElementsByTagName("td")
For Each knotenEineZelle In knotenAlleZellen
Cells(zeile, spalte).Value = Trim(knotenEineZelle.innertext)
spalte = spalte + 1
Next knotenEineZelle
zeile = zeile + 1
spalte = 1
End If
End If
Next htmlZeile
End Sub

Anzeige
Boahh
08.01.2020 09:36:10
michax
Boahh ... hätte ich nicht gedacht. Ihr seid ne Wucht. Damit kann ich gut arbeiten. Vielen Dank.
Ausbau
08.01.2020 17:23:03
Michael
Guten Tag,
erstaunlich, dass jemand gerade das gleiche Problem hat wie ich und dass da auch eine Lösung möglich ist. Auch ich muss immer wieder Abfragen aus der gleichen Seite tätigen um Kreditkartenabrechnungen zu kontrollieren. Bisher habe mir die Daten immer im Copy/Paste rübergeholt. Das ist immer recht aufwendig, da es manchmal bis zu 15 verschieden Währungen sind.
Ich glaube es ist via Script mit den o.g. Ansätzen umsetzbar, leider sind meine VBA-Kentnisse eher mangelhaft. Aber vielleicht kann mir einer der Profis doch noch den Code anpassen. Mein Wunsch wäre: Spalte A: entweder man trägt dort das Währungskürzel ein (oder es werden einfach alle Währungen der Seite abgefragt - das kann man sich dann ja aus der Tabelle ziehen)
Spalte B: hier nur das aktuellste Datum (oder man könnte sich ein Datum wählen)
Spalte C, D, E: die Kurse
So sieht der Aufbau aktuell bei mir aus, händisch wie gesagt. Wäre toll, wenn das einer hinbekommt.
Userbild
freundliche Grüße
Anzeige
AW: Ausbau
09.01.2020 21:18:30
Michael
:(
...hilft keine weiter?
AW: Ausbau
11.01.2020 09:48:20
Hajo_Zi
Du bist im falschen Forum. Bildbearbeitung ist ein anderes.
Bilder lade ich mir nicht runter, da Excel damit nichts anfangen kann.
Hochgeladene Bilder können zwar als solche in Excel importiert werden, sind jedoch bei der Lösung von Problemen nicht sehr hilfreich, da man die eigentlichen Daten nicht ohne große und zeitraubende Umwege direkt in die Tabelle übertragen kann.
Schau mal hier
Eine hochgeladene Arbeitsmappe bzw. ein geposteter Tabellenausschnitt dagegen, erhöhen die Wahrscheinlichkeit, dass Du eine Lösung für Dein Problem erhältst.
Erstelle folglich bitte eine Demomappe, aus der deine Aufgabenstellung klar erkennbar ist und lade diese hoch oder benutze ein Tool zur Tabellenanzeige.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, solltest du diese Daten anonymisieren bzw. pseudonymisieren.
Falls Du den Download des Forums nicht benutzen möchtest beachte bitte: von unsicheren Servern file-upload lade ich keine Datei herunter (lt. Einschätzung meines Virenprogramms).

Jul 2014
 C
29Falsch
30496

verwendete Formeln
Zelle Formel Bereich N/A
C29=C27=C28  
C30=SUMMEWENN([Bildschirm.xlsm]Statistik!$Q$44:$Q$54;"<" &HEUTE();[Bildschirm.xlsm]Statistik!$R$54)  


Falls Datei.
Wenn du an Stelle einer Demomappe deine Originalmappe hochladen willst, diese aber sensible Daten enthält, kannst du diese Daten
http://www.ms-office-forum.de/forum/showthread.php?t=322895
änderrn.
Das ist nur meine Meinung zu dem Thema.

Anzeige
AW: Ausbau
11.01.2020 11:05:37
Michael
Hallo Hajo,
danke für Deine Antwort und die ausführliche Begründung. Vielleicht habe ich es auch einfach falsch erklärt. Das Bild stellt auch nicht meine aktuelle Datei dar, sondern sollte nur dazu dienen, meinen "Wunsch" zu demonstrieren.
Ich versuch es nochmal zu erklären:
Für den Thread-Starter hattet Ihr ja eine Lösung gefunden von der Internetseite die Daten auszulesen. An sich schon so in die Richtung, die ich auch benötige.
Meine Frage dann: ist es möglich, eines Eurer Scipte so zu erweitern, dass es dann so, wie eben oben in der Grafik dargestellt, ausgegeben wird?
Ist es so etwas besser verständlich?
Anzeige
AW: Ausbau
11.01.2020 17:53:55
Zwenn
Hallo Michael,
ich habe dir eine Schleife drum gebastelt. Man könnte auch noch die Währungszeichen von den Zahlen trennen. Falls Du damit was ausrechnen willst ist das komfortabler. Habe ich aber gerade keine Zeit mehr für.
https://www.herber.de/bbs/user/134326.xlsm
Viele Grüße,
Zwenn
AW: Ausbau
12.01.2020 11:24:48
Michael
Ehh Zwenn,
Du bist ja 'ne Granate. Ich bin echt erstaunt, was so alles geht. Hätte ich wirklich nicht gedacht. Ich verneige mich virtuell vor Dir. :o) Vielen, vielen Dank
Die Währungszeichen rausrechnen bekomme ich hin. Was evtl. noch problematisch ist, dass manchmal "Keine Kursdaten vorhanden" kommt, dann müsste das Datum davor genommen werden. ... wenn mal wieder Zeit bei Dir ist :-)
Aber auch so schon echt vielen Dank.
Anzeige
Oder so ;-)
12.01.2020 15:18:17
Anton
Hallo zusammen,
hier noch meine Variante:
Code in Zwischenablage:

Option Explicit
Sub b()
  Dim IEApp As Object, al As Object, result As Object, link As Object  
  Dim i As Integer, iRow As Integer, iCel As Integer, opt As Integer    
  Dim waehrung As Object, kalender As Object, datum As String    
  datum = CStr(Day(Date - 2)) 'anpassen: Heute minus 2 Tage
  Cells.Clear
  Range("A1:F1").Font.Color = vbRed
  Range("A1:F1").Font.Bold = True  
  Cells(1, 1) = "Bitte warten! Hole Daten."
  iRow = 2
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "https://misc.firstdata.eu/CurrencyCalculator/fremdwaehrungskurse/calendar"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.document.ReadyState = "complete"    
  IEApp.document.getelementsbyname("masterCardChecked")(0).Checked = True
  IEApp.document.getelementsbyname("visaChecked")(0).Checked = True
  Set waehrung = IEApp.document.getelementbyid("Waehrung")
  For opt = 1 To waehrung.Length - 1  
    Cells(iRow, 1) = waehrung(opt).Value
    Cells(iRow, 2) = waehrung(opt).innertext
    iRow = iRow + 1
  Next
  Set waehrung = Nothing  
  Set kalender = IEApp.document.getelementbyid("cal1Container")
  For Each al In kalender.all  
    If al.innertext = datum Then  
      al.Click
      Exit For  
    End If  
  Next
  Set kalender = Nothing  
  For i = 2 To iRow - 1  
    On Error Resume Next    
    Do
      Set waehrung = IEApp.document.getelementbyid("Waehrung")
    Loop Until Not waehrung Is Nothing    
    waehrung.Value = Cells(i, 1)
    Set waehrung = Nothing  
    IEApp.document.getelementsbyname("submitButton")(0).Click
    Do:
      Set result = IEApp.document.getelementsbyclassname("resultsTable")(0)
    Loop Until Not result Is Nothing    
    If Not result Is Nothing Then    
      For iCel = 0 To result.Rows(1).Cells.Length - 1  
        Cells(i, iCel + 3) = result.Rows(1).Cells(iCel).innertext
      Next
    End If  
    Set result = Nothing  
    On Error GoTo 0    
    For Each link In IEApp.document.Links  
      If InStr(1, link.href, "ILinkListener-requestPageLink") <> 0 Then link.Click  
      Exit For  
    Next
  Next
  IEApp.Quit
  Set IEApp = Nothing  
  Cells(1, 1) = ""
  Cells(1, 2) = "Währung"
  Cells(1, 3) = "Kursdatum"
  Cells(1, 4) = "Mastercard/Maestro Umsätze"
  Cells(1, 5) = "Visa Geldkurs"
  Cells(1, 6) = "Visa Briefkurs"
  Columns.AutoFit
End Sub  

mfg Anton
AW: Oder so ;-)
12.01.2020 16:28:34
Michael
Das ist auch nicht schlecht. Das Script läuft bei über 200 Abfragen natürlich eine Weile. Das Problem mit "Keine Kursdaten vorhanden" ließe sich hier mit der manuellen Datumseingabe lösen.
Scharmant, scharmant :-)
AW: Oder so ;-)
12.01.2020 17:58:27
Michael
So... mit ein wenig probieren und den Code aus den beiden letzten Sripten, konnte ich mir das basteln, was ich benötige. Ich möchte hiermit allen nochmal recht herzlich danken. Ein echt gutes Forum hier.
:-)=) owT
13.01.2020 14:17:10
Zwenn

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige