Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1496to1500
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
Daten aus Website in Excel importieren
06.06.2016 10:33:51
Patrick
Guten Tag Allerseits,
Gerne würde ich folgende Problemstellung in das Forum einbringen, in der Hoffnung, jemand kennt die Lösung dazu :-)
Und zwar geht es darum, vom folgenden Link:
http://performance.morningstar.com/stock/performance-return.action?t=ABBN&region=che&culture=en-US
die Daten aus "Price History" mit Date Range "max" oder ab dem Jahr 2000 bis heute in ein neues Excel Blatt als festen Werte zu kopieren.
Nachfolgend findet Ihr die Musterdatei dazu:
https://www.herber.de/bbs/user/106013.xlsx
Im Blatt "Stocks" stehen alle Titel, deren Daten importiert werden sollen.
Das Makro sollte durch die Spalte A durchgehen, ein neues Blatt mit "P-" und dann den Kürzel des Titels erstellen. Danach auf den obenstehenden Web-Link gehen und die Daten des entsprechenden Titels importieren...
Wäre dies möglich umzusetzen?
Für Eure Hilfe bin ich Euch dankbar!
Beste Grüsse
Patrick

28
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten aus Website in Excel importieren
06.06.2016 10:55:52
Fennek
Hallo,
nur eine Verständnisfrage, ohne die Daten gesehen zu haben:
Mit Power-Pivot (ab xl2010 als kostenloser Zusatz) kann man direkt Tabellen aus einer Webseite einlesen. Wurde das geprüft?
mfg

AW: Daten aus Website in Excel importieren
06.06.2016 11:10:21
Patrick
Hallo Fennek,
Danke für dein Feedback.
Ich habe versucht über die Funktion "Daten" - "Aus dem Web" eine Verknüpfung zur Tabelle in der Website herzustellen, leider ist das nicht möglich... Was sich als schwierig heraustellt ist wohl die Angabe der Date Range auf "max" bzw. ab 2000...
Grüsse
Patrick

AW: Daten aus Website in Excel importieren
06.06.2016 11:45:52
Fennek
Hallo,
andere hier im Forum liefern häufig spezielle Lösungen, aber ich schicke zwei Codes, die hier vor einiger Zeit gepostet wurden und überlasse die die Anpassung:

Sub WebGet1()
'source: snb
With CreateObject("MSXML2.XMLHTTP")
.Open "get", "http://www.spiegel.de", False
.send
c00 = .responsetext
End With
Debug.Print c00
End Sub
und als Alternative:

Option Explicit
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Sub html_auslesen()
Dim htmlOut As String
Dim htmlIn As String
Dim iexpl As Object
Set iexpl = CreateObject("InternetExplorer.Application")
With iexpl
.Visible = True
.Navigate "http://de.wikipedia.org/wiki/Bayern-Landshut#Liste_der_Herz.C3.B6ge_von_Bayern- _
Landshut"
Do
DoEvents
Call Sleep(100)
Loop While .Busy
htmlOut = .Document.body.innerhtml
htmlIn = .Document.body.outerhtml
.Quit
End With
Set iexpl = Nothing
End Sub
mfg

Anzeige
AW: Daten aus Website in Excel importieren
06.06.2016 12:41:45
Patrick
Hallo Fennek,
Ich habe versucht es anzupassen, leider ohne Erfolg. Meine Problemstellung ist wohl nicht so einfach über standard makros zu lösen...
Gleichwohl Danke für deinen Input.
Grüsse
Patrick

AW: Daten aus Website in Excel importieren
06.06.2016 17:09:45
Zwenn
Hallo Patrick,
soweit ich sehen kann, können die von Dir gewünschten Daten grundsätzlich geholt werden. Nun habe ich aber grade keine Zeit, mich da wirklich rein zu denken und kann mit Deiner Forderung "Date Range max" bzw. alles ab dem Jahr 2000 bisher noch nix anfangen. Nach kurzer Sichtung der Seite musst Du Dich vermutlich durch die Verlinkungen hangeln.
Um die benötigten Links auszulesen und anschließend an die Daten zu kommen, musst Du Dich mit dem DOM (Document Object Model) des Internet Explorer auseinander setzen. Vor einiger Zeit habe ich hier mal einen etwas ausführlicheren Beitrag zu den ersten Schritten dazu verfasst. Mit dem dort dargebotenen erschlägst Du zwar nicht Dein gesamtes Problem, weil nur eine Seite ohne Verlinkungen ausgelesen werden sollte, aber ich bin mir sicher, dass Du eine Vorstellung davon bekommst, wohin die Reise geht.
Hier kannst Du meinen Beitrag lesen:
https://www.herber.de/forum/archiv/1492to1496/t1492241.htm#1493245
Viele Grüße,
Zwenn

Anzeige
AW: Daten aus Website in Excel importieren
07.06.2016 09:25:06
Patrick
Guten Tag Zwenn,
Danke für dein Input.
Der Beitrag ist für mich als VBA Neuling ziemlich komplex und kann leider nicht viel damit anfangen.
Als Vergleich:
Bei Yahoo Finance kann ich über eine Verlinkung direkt die Preis Historie importieren:
Sub update_prices()
Dim Spalte As Integer
Dim startzeile As Integer
Dim endzeile As Integer
Dim numberws As Integer
Tabellenblatt = "funda-alys"   'InputBox("Name des Tabellenblattes in der sich die Aktienkürzel  _
von finance.yahoo.de befinden")
Spalte = "1"                'InputBox("Nummer der Spalte in der sich die Aktienkürzel von  _
finance.yahoo.de befinden")
startzeile = "6"            'InputBox("Startzeilenummer der Aktienkürzel")
endzeile = Loletzte         'InputBox("Endzeile der Aktienkürzel")
For n = startzeile To endzeile
x = Worksheets(Tabellenblatt).Cells(n, Spalte).Value
ActiveWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;http://ichart.finance.yahoo.com/table.csv?s=" & x & "&d=" & Month(Date) & "&e=" & Day( _
Date) & "&f=" & Year(Date) & "&g=d&a=0&b=1&c=1900&ignore=.csv" _
, Destination:=Range("$A$1"))
.Name = "table.csv?s=BMW.DE&d=6&e=31&f=2012&g=d&a=0&b=1&c=2003&ignore="
.FieldNames = True
.RowNumbers = True
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(5, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
ActiveSheet.Name = "P-" & x
ActiveWorkbook.Connections("table.csv?s=" & x & "&d=" & Month(Date) & "&e=" & Day(Date) & "&f="  _
& Year(Date) & "&g=d&a=0&b=1&c=1900&ignore=").Delete
ActiveSheet.QueryTables.Item(ActiveSheet.QueryTables.Count).Delete
ActiveSheet.ListObjects.Add(xlSrcRange, ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet. _
Cells(1, 7).End(xlDown)), , xlYes).Name = x
'MsgBox "Die Kurse für " & x & " wurden erfolgreich in ein neues Tabellenblatt geladen."
Next n
End Sub

So etwas dachte ich mir auch für Morningstar.com, jedoch funktioniert das leider nicht...
Bzgl. der Date Range, möchte ich einfach alle vorhandenen Preis-Daten angezeigt bekommen.
Ich hoffe meine Erläuterungen helfen die Problemstellung besser zu verstehen.
Grüsse
Patrick

Anzeige
AW: Daten aus Website in Excel importieren
07.06.2016 10:03:06
Zwenn
Guten Morgen Patrick,
sorry, hatte vergessen den Haken zu setzen, dass das Problem noch offen ist. Hast Du eine Deadline für dieses Projekt? Ich komme leider frühestens heute Abend dazu, mich abseits eines flüchtigen Blickes damit zu beschäftigen.
Gruß,
Zwenn

AW: Daten aus Website in Excel importieren
07.06.2016 11:13:24
Patrick
Guten Tag Zwenn,
Kein Problem :-)
Es hat noch die ganze Woche zeit, bin noch nicht unter Zeitdruck...
Grüsse
Patrick

AW: Daten aus Website in Excel importieren
07.06.2016 12:07:35
Zwenn
So,
habe jetzt doch mal einen Blick zwischendurch riskiert ;-)
Das mit der Max-Range habe ich jetzt gesehen. Willst Du die bis maximal ins Jahr 2000 zurück? Also alles weglassen, was in den 90ern schon war? Was ist mit der Frequency? Wenn ich Deinen Beispiellink nehme, dann kommen bei einer "Daily" Frequenz 171 Seiten für die Datumsgrenzen 01.01.2000 bis heute raus, die ausgelesen werden müssten. Bei "Yearly" ist es nur eine Seite.
Die Einstellungen für Max-Range, Frequency und das Blättern durch die Seiten werden über Java Script gesteuert. Das ist für uns schlecht, weil man JS Variablen nicht direkt von außen lesen oder gar setzen kann. Ich muss mal darüber nachdenken, wie man das lösen kann. Dazu muss ich mir aber erstmal die Seitenmechanik zu Gemüte führen. Wenn das über Formular-Elemente gelöst wurde, müsste das gehen. Ansonsten mal sehen, ob es auch eine andere Möglichkeit gibt.
Gruß,
Zwenn

Anzeige
AW: Daten aus Website in Excel importieren
07.06.2016 12:33:46
Zwenn
Ok,
habe grade rausgefunden, dass man Java Script Funktionen von Internetseiten durch VBA auslösen kann. Ausserdem gibt es einen Export-Button (ebenfalls Java Script gesteuert), mit dem man sich eine CSV aller in Max-Range und Frequency angeforderten Daten auf einmal ziehen kann.
Ich teste heute Abend mal, wie weit ich mit diesen Erkenntnissen komme. Wenn sich die CSV mit dem entsprechend gewünschten Datenumfang ziehen lässt, haben wir gewonnen, da die Verarbeitung der CSV anschließend unabhängig von der Webpage stattfindet.
Mal schauen,ich bin gespannt.
Gruß,
Zwenn

Anzeige
AW: Daten aus Website in Excel importieren
07.06.2016 16:07:35
Patrick
Hallo Zwenn,
Genau, ein Export aller in Max-Range und Frequency angeforderten Daten in CSV und ins Excel einfügen, das wäre ideal!
Wenn die Max-Range angewählt werden kann, dann erübrigt sich das mit dem "ab Jahr 2000", da ich alle vorhandenen Tagespreise benötige für die weitere Kursanalyse.
Die Frequency sollte vom Benutzer auswählbar sein (Daily, Weekly, Yearly etc.), Standardeinstellung Daily.
Ich bin auch gespannt auf Deine Erkenntnisse!
Grüsse
Patrick

Einfacher als gedacht
07.06.2016 22:23:02
Zwenn
Hallo Patrick,
nun habe ich mir mal die Mechanik der Seite zu Gemüte geführt. Zunächst war ich noch davon ausgegangen, wir müssen die JS-Funktionen ansteuern. Das würde wohl auch klappen, ist aber völlig unnötig. Man kann nämlich direkt auf die CSV Dateien zugreifen.
Rausgefunden habe ich das, als ich versuchte zu ergründen, wie man den Download-Dialog des Internet Explorers fernsteuern kann. Dafür habe ich zwar keine Lösung gefunden, dachte mir aber, dass dieser Dialog ja auf eine Datei zugreift, die durch einen URL aufgerufen wird. Also habe ich Wireshark angeworfen und mir angesehen, was aufgerufen wird, wenn man auf den Export-Button klickt. Die Anfrage wird zwar mit der Get-Methode an den Server geschickt, aber es ist trotzdem einfach nur ein Link mit Parametern.
Darunter auch die beiden Parameter für den Zeitraum und die Frequenz. Diesen Link kann man sich also so zusammenbasteln, wie man ihn braucht und kann ihn dann direkt abschicken. Soweit ich das im Moment sehe, brauchen wir nicht mal den Internet Explorer, können uns also den Aufruf der Seite selbst komplett sparen. Dateien kann man nämlich direkt mit einer System Funktion runterladen. Das habe ich schon mit mehr als 1 Mio. Bildern gemacht. Allerdings arbeite ich mit einer 32 BIT Version von Excel. Falls Du eine 64 BIT Version installiert hast, teile mir das bitte mit.
Heute werde ich nix mehr programmieren. Du sagtest ja, bis Ende der Woche ist noch Zeit. Deshalb ein paar Fragen zu dem, was das Makro in Zukunft machen soll, bevor ich damit anfange. (Wie so oft, ist die Vorarbeit entscheidend, um sich ernsthafte Fehler bzw. fehlende Funktionalitäten zu ersparen. Auch wenn es erstmal so aussieht, als dauere sie zu lange. Unterm Strich geht es schneller.)
  • Willst Du die Daten einmalig in die zu erstellenden Tabellen einlesen oder sollen bereits bestehende Tabellen mit bereits eingelesenen Werten ergänzt werden, wenn das Makro wiederholt aufgerufen wird?

  • Ist die Startzelle zum Aufruf der richtigen Links fix A2?

  • In Deiner Beispiel-Datei hast Du drei zu holende Datensätze angegeben. Ich nehme an, die echte Anzahl liegt höher bzw. kann sich in Zukunft sogar ändern?

  • Die CSV-Dateien enthalten das US-Datumsformat (Monat, Tag, Jahr). Soll das so bleiben oder soll es das deutsche Datumsformat sein (Tag, Monat, Jahr)?

  • Während der 1000er Trenner in den CSV-Dateien bei Zahlen ein Komma ist, ist das Komma ein Punkt. Also auch die US-Schreibweise. Gehe ich recht in der Annahme, dass Du es genau andersrum brauchst, also in deutscher Schreibweise? (1000er Trenner = Punkt und Komma = Komma)

  • Sofern Du es schaffst die Fragen bis morgen Abend zu klären, fange ich morgen Abend mit dem Programmieren an. Wenn es keine Überraschungen mehr gibt, sollte übermorgen Abend eine Lösung vorliegen, mit der Du arbeiten kannst. Feintuning kann man dann immer noch betreiben.
    Viele Grüße,
    Zwenn

    Anzeige
    AW: Einfacher als gedacht
    08.06.2016 10:24:38
    Patrick
    Guten Tag Zwenn,
    Das sind ja gute Neuigkeiten :-)
    Zu Deinen Fragen:
    - ich arbeite mit einer 64-bit Version von Excel
    - Mittels einem anderen Makro würde ich alle einzelnen Price-History Tabellen (P-xxxx) löschen bevor Dein Makro ausgelöst wird. Die Idee ist, täglich das Makro laufen zu lassen um die neuen Tageskursen von gestern zu erhalten.
    - Startzeile wäre fix A6
    - Ja die Anzahl liegt höher und kann sich ändern, je nachdem welche Titel/Indexes ich analysieren möchte... aktuelle max. Zahl liegt bei 430 Titeln.
    - Gerne das deutsche Datumsformat wenn möglich!
    - Folgende Schreibeweise für die Zahlen (568.25 / 1'100.00 / 1'500'600.50 etc.)
    Hinweis: Dein Makro für den Auszug der Price-History Daten wollte ich anschliessend für weitere Datenauszüge für die gleichen Titel verwenden.
    Explizit die nachfolgenden Daten:
    Key Ratios:
    http://financials.morningstar.com/ratios/r.html?t=ABBN&region=che&culture=en-US
    Income Statement:
    http://financials.morningstar.com/income-statement/is.html?t=ABBN&region=che&culture=en-US
    Balance Sheet:
    http://financials.morningstar.com/balance-sheet/bs.html?t=ABBN&region=che&culture=en-US
    Cash Flow:
    http://financials.morningstar.com/cash-flow/cf.html?t=ABBN&region=che&culture=en-US
    Alle diese Daten können auch per CSV Datei gezogen werden.
    Dabei würden die Key Ratios Tabellen mit KR-xxxx, die Income Statement Tabellen mit IS-xxxx, die Balance Sheet Tabellen mit BS-xxxx und die Cash Flow Tabellen mit CF-xxxx beginnen.
    Die Daten für Dividenden (D-xxxx):
    http://performance.morningstar.com/stock/performance-return.action?p=dividend_split_page&t=ABBN&region=che&culture=en-US
    hat leider kein CSV Export, da müsste man wohl einen anderen Weg gehen...
    Ich gehe aktuell davon aus, dass ich Dein Makro nehmen und dann die Links anpassen kann um die weiteren Daten ziehen zu können, ob es dann wirklich so einfach wird sehe ich dann :-)
    Besten Dank für Deine Unterstützung Zwenn!
    Grüsse
    Patrick

    Anzeige
    AW: Einfacher als gedacht
    09.06.2016 00:52:50
    Zwenn
    Hallo Patrick,
    das sieht ja nach einem größeren Projekt aus. Die Downloadmethode für die CSV Dateien sollten für die anderen von Dir vorgestellten Seiten in der Tat genauso funktionieren. Du brauchst dazu nur noch die direkten Download-Links und eventuell muss man rausfinden, wofür welche Parameter darin sind. Die Links kann ich Dir mit Wireshark besorgen.
    Dein letzter Link zu den Dividenden ruft eine Seite auf, die ich bisher nicht verstanden habe. Wenn man den Seiten-Qulltext aufruft, findet man darin nichts von den Inhalten, die ausgelesen werden sollen. Die würde ich deshalb erstmal ganz hinten anstellen.
    Für die Price History bin ich jetzt soweit, dass die CSV Dateien für alle in der Übersichtstabelle ab Zelle A6 eingetragenen Unternehmen runtergeladen werden. Sie landen im gleichen Verzeichnis, wie die Excel-Dateil liegt, aus der das Makro aufgerufen wird.
    Wenn Du das Makro FinanzDatenHolen aufrufst, erscheint ein Dialog, in dem Du die Frequency festlegen kannst. Das wolltest Du ja gerne so haben. Als Zeitraum setze ich immer Max Range. Das ist am einfachsten.
    Die Tabellen, in denen die Daten dann landen sollen, werden auch bereits generiert.
    Da Du eine 64 Bit Version von Excel verwendest und ich eine 32 Bit Version, teste mal bitte, ob das Makro bei Dir ebenfalls die Downloads der CSV Dateien durchführt. Ich habe versucht es so zu programmieren, dass das Ganze sowohl bei mir (32 Bit), wie auch bei Dir (64 Bit) läuft. Ich kann nur den 64 Bit Part nicht testen, will aber dass das läuft, bevor ich mich um die Verarbeitung der CSV Dateien kümmere.
    Die Verarbeitung wirst Du für die anderen CSV Dateien wahrscheinlich nicht 1 zu 1 übernehmen können, weil die andere Werte enthalten und entsprechend anders aufgebaute Datensätze enthalten werden. Die Verarbeitung wird sowieso eine Spezialanfertigung, da als Trennzeichen für die Datenfelder Kommas verwendet werden, die sich aber auch als 1000er Trennzeichen in der letzten Spalte der Datenfelder befinden. Ich habe da aber schon eine Idee.
    Die Formatierung der Zahlen, wie Du sie willst überlasse ich Dir. Ich sorge erstmal nur dafür, dass Zahlen auch als Zahlen von Excel verarbeitet werden. Du willst ja Auswertungen fahren, da nützt es nix, wenn Excel alles als Text ansieht. Ich gehe davon aus, dass Du eine deutsche Excel Version verwendest oder?
    Das Makro hat bisher keinerlei "Aufräumfunktion". Wenn Du es mehrmals testen willst, dann musst Du die runtergeladenen CSV Dateien vor jedem Durchgang von Hand löschen. Ausserdem musst Du die Erzeugten zusätzlichen Tabellenblätter ebenfalls manuell löschen. Sonst hagelt es Fehlermeldungen.
    Also, ich hoffe es funktioniert direkt bei Dir mit den Downloads und falls nicht, dass wir schnell eine Lösung finden. Hier ist die Datei mit dem bisherigen Makro:
    https://www.herber.de/bbs/user/106106.xlsm
    Viele Grüße,
    Zwenn

    Anzeige
    AW: Einfacher als gedacht
    10.06.2016 00:16:06
    Zwenn
    Hiho Patrick,
    nun hast Du heute zwar nicht reagiert, aber ich nehme an, es hat einfach nicht gepasst. Wie zugesagt habe ich aber eine Lösung zusammengeschustert, die macht, was Du in Deinem ersten Posting wolltest. Also wie zugesagt. Du hast heute eine Lösung, mit der Du arbeiten kannst. Im Link unten findest Du sie.
    Zwar hatte ich eine Idee, wie ich mit den CSV Dateien umgehen soll, habe mich aber für "die billige" Methode entschieden und den Makro Rekorder verwendet ;-) Natürlich habe ich die Aufzeichnung angepasst, damit sie dynamisch mit den einzulesenden CSV-Dateien funktioniert.
    Insgesamt kommt bei meiner Lösung bisher raus, dass Du die Preis Histoty importiert bekommst, wie Du es wolltest. Nun hast Du ja noch die ein oder andere Seite genannt, von der Du auch gerne Daten hättest. Im Grunde ist das ja alles gelöst. Die Frage ist, ob Du das selbst hinbekommst oder ob Du Hilfe brauchst. Wenn ja, sag es einfach. Was die Dividenden angeht, weiß ich aber noch nicht, ob wir da eine Lösung finden.
    Ich biete das an, weil ich selbst Daten auswerte, die ich mir zum Teil in großem Umfang selbst besorgen muss. Das hat schon was ;-) Aber mal im Ernst ... Ich habe überlegt, ob das Anlegen einer neuen Arbeitsmappe für die Ergebnisse unabhängiger wäre. Also, wenn die Datei mit dem Makro und der Liste der einzulesenden Unternhemen besteht und von der aus eine neue Datei erstellt würde, die mit einem Zeitstempel im Namen die Ergebnisse speichert. Damit würdest Du Dir automatisch ein Archiv anlegen. Macht aber nur Sinn, wenn Du das brauchen kannst.
    Ich hoffe die 64 Bit Version funktioniert:
    https://www.herber.de/bbs/user/106129.xlsm
    Viele Grüße,
    Zwenn

    Anzeige
    Vergessen
    10.06.2016 00:26:10
    Zwenn
    Was mir Sorgen macht, sind die 0 Zeilen in den Import Tabellen. Weil, die sind in den drei Tabellen geich! Die anderen Werte in den Zeilen sind zwar unterschiedich, aber diese Gleichheit macht ja eigentlich nur Sinn, wenn das börsenfreie Tage sind. Ist das so?

    AW: Vergessen
    10.06.2016 09:26:08
    Patrick
    Guten Tag Zwenn,
    Entschudlige meine späte Antwort, ich war den ganzen Tag/Abend geschäftlich unterwegs.
    Ich habe Dein Makro laufen lassen, leider erhalte ich folgende Fehlermeldung:
    Userbild
    Getestet habe ich die Vorversion (auf meine Heim-PC (englische Excel Version), die letzte Version konnte ich leider nicht öffnen (Firewall im Büro :( )
    Zu deinen Fragen:
    - Dies mit den 0 Zeilen kann ich leider nicht nachvollziehen, evtl. kannst Du mir ein Printscreen davon schicken zum besseren Verständnis?
    - Ich verwende im Büro die deutsche Excel Version, zu Hause habe ich die englische Version... spielt das eine entscheidende Rolle?
    Grüsse
    Patrick

    AW: Vergessen
    10.06.2016 13:13:44
    Zwenn
    Hallo Patrick,
    ich hatte mir gedacht, dass Du es einfach nicht geschafft hast ins Forum zu gucken. Ist ja nicht schlimm, zumal ich ja erst etwas für gestern Abend angekündigt hatte.
    Der Fehler, den Du angezeigt bekommst hatte ich vorausgesehen. In der zuletzt hochgeladenen Datei habe ich den Typ des Rückgabewertes bereits von Long auf LongPtr geändert. Ich hoffe, dass es damit nun auch bei Dir läuft.
    Wie sich das Makro unter einer englischsprachigen Excel-Version verhält kann ich nicht sagen. Das musst Du einfach ausprobieren. Ich nehme an, es kann zu Unterschieden in der Darstellung der importierten Daten und der importierten Zahlen kommen.
    Meine Formulierung 0-Zeilen war schlecht gewählt, sorry. Ich habe mir natürlich angesehen, was da importiert wurde und da ist mir sofort ins Auge gesprungen, dass in allen drei Import-Tabellen in den gleichen Tages-Datensätzen für Open, High, Low und Close die gleichen Werte stehen und in der Spalte Volume immer eine 0.
    Nun habe ich aber gesehen, dass es sich bei den Daten offenbar um Feiertage handelte, an denen nicht gehandelt wurde. Was ich ja auch schon als Vermutung formuliert hatte. Mich irritierte beim schnellen Blick nur die Gleichheit in allen Tabellen, bei einem unregelmäßigen Abstand der Zeilen, in denen dieses Phänomen auftritt. Nun habe ich aber gesehen, dass Wochenenden gar nicht mit in den Daten enthalten sind. Diese hätten ja ein sehr regelmäßiges Muster erzeugt.
    Die runtergeladenen CSV-Dateien löscht das Makro übrigens in der aktuellen Version wieder, sobald sie verarbeitet wurden. Bestehende Import-Tabellen lasse ich hingegen unangetastet.
    Nun wird dieser Thread zwar bald unten in der Forumsübersicht ankommen und im Archiv verschwinden, ich schreibe hier aber trotzdem noch ein paar Ideen und Fragen rein.
  • Ich würde die ersten 5 Zeilen der Übersichts-Tabelle einfrieren und den Teil darunter während der Importe so scrollen lassen, dass Du immer sehen kannst, wie weit die Verarbeitung fortgeschritten ist. Am Ende kann man dann wieder in die Ausgangsposition scrollen.

  • Du sprachst davon über 400 Unternehmen in Deiner echten Tabelle zu haben. Das bedeutet, Du hast danach auch über 400 Tabellen, in denen Du navigieren musst. Für solch umfangreiche Arbeitsmappen hat sich bei mir ein Verlinkungssystem bewährt. Zu jeder erzeugten Tabelle wird in der Übersichts-Tabelle ein Link generiert, der direkt diese Tabelle anzeigt. In den Import-Tabellen wird widerum ein Link auf die Übersichts-Tabelle gesetzt. Auf diese Weise brauchst Du lediglich in den Zeilen der Übersichts-Taballe das richtige Unternehmen aussuchen

  • Wie ist es mit den Importen, die Du zusätzlich zur Price History machen willst? Sollen die auch alle in der gleichen Arbeitsmappe landen? Dann würde Dein Tabellenumfang stark anwachsen und das Verlinkungssystem wäre noch vorteilhafter

  • Sollen immer alle Importe gemacht werden oder brauchst Du zu verschiedenen Zeiten nur bestimmte Importe, die Du auswählen kannst? In dem Fall würde man den Dialog erweitern, in dem Du jetzt zu Anfang nur die Frequency auswählen kannst

  • Im Moment wird ja die komplette Liste abgearbeitet und alles wird importiert. Du kannst natürlich mehrere Übersichts-Tabellen vorhalten, in denen Du dann immer nur die Unternehmen in die Liste aufnimmst, die Du Dir grade anschauen willst. Man kann es aber uch so programmieren, dass Du einen Block mit der Maus selektieren kannst, der dann abgearbeitet wird. Das eignet sich vor allem, wenn Du einzelne Unternhemen noch einmal importieren willst

  • Sicher kann man sich noch viele weitere Features ausdenken. Vor allem auf die Auswertung der Daten bezogen. Automatisiert 400 Unternehmens-Daten in Diagramme und was weiß ich was Du brauchst verwandeln zu lassen hätte sicher was. Das ist dann aber ein größeres Projekt. Ich weiß ja auch gar nicht, wofür Du die Daten brauchst. Jetzt müssen wir erstmal dafür sorgen, dass das Makro auch bei Dir macht, was es bisher kann.
    Viele Grüße,
    Zwenn

    AW: Vergessen
    10.06.2016 14:48:20
    Patrick
    Hallo Zwenn,
    Ich hoffe heute nach der Arbeit komme ich noch dazu deine aktuelle Version zu testen und gebe dir anschliessend Feedback!
    Zu deinen Fragen:
    - Bzgl. der "0-Zeilen", das hast Du alles richtig erkannt :-)
    - Das Scrollen für die Forschrittsanzeige ist ein hilfreiches Feature!
    - Die Problematik mit dem navigieren zwischen der Übersichtsseite und Importtabellen hast Du richtig erkannt, ist aber nicht sehr kritisch, da ich auf der Übersichtsseite mittels Formeln mir die gewünschten Daten aus den Importtabellen ziehe. Wenn die Features mit der Fortschrittsanzeige und Navigation bzgl. Performance keine erheblichen Einbussen bewirken, dann kannst Du diese hilfreichen Features gerne integrieren :-)
    - Die zusätzlichen Importen sollen in der gleichen Arbeitsmappe landen, damit ich eine vollständige Fundamentalanalyse durchführen kann.
    - Die gewünschten Importe sollen individuell durchgeführt werden. Die Price Daten aktualisiere ich täglich, die anderen Daten ändern sich nur quartalsweise bzw. jährlich. Idealerweise würde der Dialog fragen "Update Prices", "Update Fundamentals" (beinhaltet Income Statement, Balance Sheet und Cash Flow Import), "Update KeyRatios", "Update Dividends" oder "Update All Data"?
    - Das ist ein guter Hinweis bezüglich der Selektion. Hatte gedacht in einer Tabelle "Indexes" alle möglichen Titel aufzulisten, und in der Übersichtsseite würde ich die zu analysierenden Unternehmen auflisten. Wenn ich aber in einer bestehenden Auflistung nur die Werte von einzelnen Unternehmen updaten möchte, dann wäre das mit der Einzelselektion hilfreich, um nicht alle Unternehmenswerte nochmals updaten zu müssen!
    Besten Dank für deine Unterstützung Zwenn!
    Grüsse
    Patrick

    AW: Vergessen
    11.06.2016 10:27:34
    Patrick
    Guten Tag Zwenn,
    Ich habe es nochmals probiert, leider immer noch die gleiche Fehlermeldung :-(
    merkwürdig scheint mir, dass die untenstehende Zeile schon beim öffnen des Makromoduls rot markiert wird:
    Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
    Ich hoffe das hilft Dir weiter!
    Grüsse
    Patrick

    AW: Vergessen
    11.06.2016 12:34:04
    Zwenn
    Moin Patrick,
    das die Zeile rot markiert wird kann schon sein. Das ist die, die für 32 Bit Systeme genutzt wird. Wenn Du das Makro laufen lässt, dann wird sie durch die #If-Schachtelung aber gar nicht in den laufenden Code aufgenommen.
    Wie auch immer, genau diese #If-Schachtelung habe ich jetzt rausgeschmissen. Ich habe nochmal nachgelesen, wie man laut Microsoft API Routinen in 64 Bit Systeme einbinden muss. Lustiger Weise läuft der gleiche Code auch auf 32 Bit Systemen, wenn auf ihnen VBA 7 installiert ist. Das ist der Fall ab Office 2010, wenn ich es richtig verstanden habe.
    Es gibt jetzt also nur noch eine deklaration der API Funktion im Makro, die sowohl bei Dir, wie auch bei mir laufen soll. Falls Du den Fehler wieder angezeigt bekommst, lasse bitte einmal das Makro TestVBA7 laufen. Falls VBA 7 bei Dir nicht verfügbar ist, fände ich das allerdings sehr komisch, weil Du auch Office 2010 verwendest.
    Falls es trotz VBA 7 nicht läuft, habe ich irgendetwas übersehen oder nicht richtig verstanden. MS erklärt hier, wie man von 32 Bit zu 64 Bit Routinen kommt:
    https://msdn.microsoft.com/en-us/library/office/ee691831%28v=office.14%29.aspx/#odc_office2010_Compatibility32bit64bit_ApplicationProgrammingInterfaceCompatibility
    Ich bin einfach mal optimistisch und glaube es funktioniert jetzt auch bei Dir ;-)
    https://www.herber.de/bbs/user/106157.xlsm
    Viele Grüße,
    Zwenn

    AW: Vergessen
    11.06.2016 13:36:24
    Zwenn
    Hi Patrick,
    nun wollte ich mich um die Scroll Funktion kümmern. Um zu sehen, ob sie so funktioniert, wie gewünscht, habe ich mir einfach weitere Unternehmenskürzel aus den Winners und Loosers Tabellen auf der Startseite kopiert. Dazu werden aber die CSV-Dateien nicht runtergeladen :-/ Also habe ich mir mit Wireshark angesehen, was für ein Link weggeschickt wird.
    Nun habe ich ja von den Märkten und was da sonst so zugehört absolut keine Ahnung. Aber um an die CSV Dateien der neu eingetragenen Unternehmen zu kommen, müssen zusätzlich zwei andere Parameter geändert werden. Zum einen der Buchstabenteil vor dem Unternehmenskürzel und zum anderen die Währung am Ende.
    Dieser Link holt die ADEN Daten:
    http://performance.morningstar.com/perform/Performance/stock/exportStockPrice.action?t=XSWX:ADEN&pd=max&freq=d&sd=&ed=&pg=0&culture=en-US&cur=CHF
    Dieser Link holt die AXLL Daten:
    http://performance.morningstar.com/perform/Performance/stock/exportStockPrice.action?t=XNYS:AXLL&pd=max&freq=d&sd=&ed=&pg=0&culture=en-US&cur=USD
    Wie Du sehen kannst, wird vor dem ADEN Eintrag im Link XSWX im Parameter t gesetzt und am Ende CHF für den Parameter cur.
    Im zweiten Link hingegen wird vor dem AXLL Eintrag XNYS im Parameter t gesetzt und USD für den Parameter cur.
    Das mit den Währungseinheiten finde ich noch einleuchtend. Mit XSWX bzw. XNYS kann ich hingegen gar nix anfangen. Die eigentliche Frage ist nun, holst Du alle deine 400+ Datensätze aus dem "gleichen Segment" oder müssen wir diese beiden Werte für alle vorhalten, um sie für den jeweiligen Download richtig setzen zu können? Wenn ja, kannst Du die so bestimmen oder wird das eine größere Aktion?
    Hmm, irgendwie geht sowas nie ohne Überraschungen ab ;-)
    Gruß,
    Zwenn

    AW: Vergessen
    11.06.2016 20:14:37
    Patrick
    Guten Abend Zwenn,
    Ich hab es nochmals versucht, leider immer noch die gleiche Fehlermeldung :-(
    Im Büro habe ich Office 2010, Zuhause Office 2013, liegt es daran?...
    XSWX bzw. XNYS sind die Indexes, in dem die verschiedenen Unternehmen gelistet sind.
    Im Weblink reicht es wenn man den Unternehmenskürzel ändert um auf die entsprechenden Daten zu kommen, dass für den Download der Index, den Unternehmenskürzel und Währung anpassen muss, war mir nicht bewusst... Diese Parameter einzeln zusammen zu suchen ist eine Riesenaktion, eine Liste wo diese Parameter aufgelistet sind habe ich bisher leider nicht gefunden :-(
    Grüsse
    Patrick

    AW: Vergessen
    12.06.2016 11:21:45
    Zwenn
    Hallo Patrick,
    bevor ich die Frage nach der 64 Bit Deklaration ins Forum gebe ...
    Verwendest Du einen PC mit Windows oder verwendest Du einen Mac? Ich frage das, weil ich einfach nicht sehen kann, welche Parameter ich falsch gesetzt habe. Wenn Du einen MAC verwendest, funktioniert das ganze Nicht, weil es dort die System-Funktion URLDownloadToFile gar nicht gibt ;-)
    Viele Grüße,
    Zwenn

    AW: Vergessen
    12.06.2016 13:16:52
    Patrick
    Guten Tag Zwenn,
    Ich verwende einen PC mit Windows 8.1, 64-Bit-Betriebssystem. MS Office Professional Plus 2013 auf Englisch, 64-Bit.
    Bzgl. den zusätzlichen Parameter, die bekomme ich zusammen, jedoch sollte ein ErrorHandler eingebaut werden, dass falls der Download Link nicht funktioniert, gleichwohl eine Tabelle erstellt wird (leere Tabelle) und das Makro weiter läuft.
    Grüsse
    Patrick

    AW: Vergessen
    12.06.2016 19:50:30
    Zwenn
    Hallo Patrick,
    also laufen die Downloads jetzt bei Dir?
    Gruß,
    Zwenn

    AW: Vergessen
    12.06.2016 22:40:39
    Patrick
    Guten Abend Zwenn,
    Die letzte Version die ich getestet hatte war 106157.xlsm, welche leider die gleiche Fehlermeldung generiert. VBA7 ist installiert, gemäss dem Makro.
    Grüsse
    Patrick

    AW: Vergessen
    13.06.2016 00:21:10
    Mullit
    Hallo,
    ...nur mal zwischendurch:
    Dim lDownloadErfolgreich As Long
    

    muß als
    Dim lDownloadErfolgreich As LongPtr
    

    deklariert sein, hattet ihr aber vorher schon richtig....
    Gruß, Mullit

    199 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige