Mac: Excel VBA - HTTP Anfrage und per XPath filtern

FrazeColder

Lt. Commander
Registriert
Okt. 2013
Beiträge
1.721
Guten Tag zusammen,

ich würde gerne den Wert eines XPaths einer Webseite in Excel laden, damit ich immer den aktuellsten Wert in meiner Excel habe. Leider gibt es für Excel nicht alle Funktionen auf einem Mac, wie für das Excel für Windows.. Daher kann ich leider keine Web Queries verwenden..

Es gibt zwar einen Umweg, dieser ist aber sehr buggy und funktioniert nicht immer (https://www.dummies.com/software/mi...b-query-to-load-tables-in-excel-2011-for-mac/). Daher schreibe ich mir lieber selber schnell was.

Ich behersche zwar diverse Programmiersprachen wie Java, PHP oder JavaScript, allerdings kein VBA, weshalb ich mal eure Hilfe benötige. Denn nach sehr langem googeln gebe ich langsam den Geist auf. Ich denke die einfachste Methode an den Wert zu kommen ist über ein Terminal Befehl. Nur leider funktioniert dieser nicht in Excel (auf dem Mac Terminal allerdings schon!).

Hier einmal der bisherige Code:

Code:
Function HTTPGet2() As String
   
    HTTPGet2 = MacScript("do shell script ""xmllint --html -xpath 'string(//*[@id=""AssetAllocationLongShortTable1""]/table/tbody/tr[1]/td[1])' http://tools.morningstar.de/de/xray/default.aspx\?LanguageId\=de-DE\&PortfolioType\=2\&SecurityTokenList\=F000000EM3\]2\]0\]ETEXG$XETR\|F00000J8T2\]2\]0\]FODEU$$ALL\&values\=50.00\|50.00\&CurrencyId\=EUR\&from\=editholding""")
   
End Function

In der Excel wird leider #WERT! ausgegeben.. ich weiß leider nicht wieso..

Über Hilfe würde ich mich sehr freuen!
Vielen Dank und MfG :)
 
Es könnte ein Problem mit den Double quotes sein:
echo "a"b"
geht nicht
echo "a\"b"
geht.
Schlage also testweise folgende Änderung vor:

HTTPGet2 = MacScript("do shell script ""xmllint --html -xpath 'string(//*[@id=\""AssetAllocationLongShortTable1\""]/table/tbody/tr[1]/td[1])' http://tools.morningstar.de/de/xray...s=50.00|50.00&CurrencyId=EUR&from=editholding""")

Du hättest also einmal die Maskierung für den VBA String, um ein einzelnes " darzustellen,
und dann noch die Maskierung für die Bash.
Außerdem scheint der Link escaped zu sein, was warscheinlich nicht stimmt, da der Link
mit Anführungszeichen umgeben ist. Versuch es mal mit dem Original Link.
 
Zuletzt bearbeitet:
Also mit \" gehts nicht. Nur mit doppelten "" Quotes.. wieso auch immer...
 
Es sind zwei Quotes, also \""
insgesamt ergibt sich eines, weil das erste zum Escapen des zweiten notwendig ist.
Ist eine Eigenheit von VBA, da der Anfang und das Ende eines Strings damit markieret werden.
Dann brauchst du noch ein Backslash um das Quote für die Bash zu escapen.

Du könntest \"" auch weglassen, also
[@id=AssetAllocationLongShortTable1]
sollte genauso gut klappen.
 
Zurück
Oben