thomas1972
Goto Top

QueryTable wird in englisch heruntergeladen. Wo kann man die Sprachregion übergeben

Hallo,

ich mache eine Webabfrage,
lasse ich mir die Page im Browser anzeigen wird alles in deutsch dargestellt,
sobald ich diese dann mit folgendem Code herunter lade,
wird dieses in Englisch in Excel eingebunden (Bezeichnungen, aber auch Umlaute werden falsch dargestellt)
kann man in der Abfrage ein Parameter mit angeben, dass dieser die Spracheinstellung des Browsers verwendet?


Set shFirstQtr = Workbooks(1).Worksheets(1) 
Set qtQtrResults = shFirstQtr.QueryTables _ 
 .Add(Connection := "URL;xxxxxx Testpage von mi ( da Intranet nicht extern aufrufbar!!!", _   
 Destination := shFirstQtr.Cells(1,1)) 
With qtQtrResults 
 .WebFormatting = xlNone 
 .WebSelectionType = xlSpecifiedTables 
 .WebTables = "1,2"   
 .Refresh 
End With

Content-ID: 258558

Url: https://administrator.de/contentid/258558

Ausgedruckt am: 25.11.2024 um 15:11 Uhr

colinardo
colinardo 27.12.2014 aktualisiert um 16:45:08 Uhr
Goto Top
Hallo Thomas1972,
das muss man normalerweise per HTTP-Header in der Anfrage übergeben.
Deswegen benutze ich für Webabfragen keine Webqueries mehr. Das ist eher was für Anfänger die nicht wissen wie sie sonst Daten aus Webseiten extrahieren sollen

Ich würde das mit einem InternetExplorer.Application-Object machen oder mit Powershell, dort geht das z.B. so:
$net = New-Object System.Net.WebClient
$net.Encoding = [System.Text.Encoding]::UTF8
$net.Headers.Add("Accept-Language","de-de")  
$data = $net.DownloadString("http://www.google.de")  
write-host $data
Die benötigten Daten lassen sich dann via RegEx extrahieren oder man nutzt das ParsedHTML-Objekt das das HTML-Dom für einen ansprechbar macht. Dazu habe ich hier im Forum schon einige Beiträge gepostet ...

Mit WebQueries in Excel ist die Angabe eines HTTP-Header IMHO nicht möglich, außer eure Seite bietet das Umschalten per URL-Parameter an..

Grüße Uwe

p.s. hier mal ein kleines Beispiel was man damit so alles machen kann:
(In diesem Beispiel werden die Titel aller Fragen auf der Startseite per Msgbox angezeigt)
VBS
Set objIE = CreateObject("InternetExplorer.Application")  
objIE.Navigate "https://administrator.de"  
'Wenn du den IE nicht sehen möchtest schaltest du ihn hier auf 'False'  
objIE.Visible = True
'warten bis die Seite komplett geladen ist  
While Not objIE.ReadyState = 4
	WScript.Sleep 250
        ' Oder "DoEvents" wenn VBA genutzt wird  
Wend

For Each node In objIE.Document.getElementsByClassName("teaser-preview")  
	strTitle = node.getElementsByTagName("div")(1).firstChild.innerText  
	MsgBox strTitle
Next
objIE.Quit
Du siehst, an die Daten kommt man auch auf anderem Wege als nur über Excel face-wink
thomas1972
thomas1972 27.12.2014 um 17:06:13 Uhr
Goto Top
Hallo Uwe,

danke für die Rückinformation.
Hab es nach dem einlesen mit einem kleinen Suchen ersetzen Script einfach umschreiben lassen ( ist von der Performance kaum merklich)

Danke nochmal