Понадобилось мне из VB Excel открыть IE и в него загрузить страницу с Google Map. Мне надо некоторое содержимое листа Excel'я отображать на google map и иметь обратную связь, когда пользователь на гугле карте начинет что-нибудь двигать.
Начал с простого, загрузка html-страницы с первым простейшим примером от Гугла. И тут же проблема. IE запускается, html-страница в него на ходу загружается, а вот сам скрипт от гугла на загруженной html-странице работать не хочет - говорит не знаю что у Вас тут за объект такой - GMap2.
Однако если сохранить этот html код в виде html-файл на диске и открыть его - то все ОК.
Вот код демонстрирующий эти два варианта:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
Public Sub LoadGMap()
Dim ie As Object
Dim fs As Object, f1 As Object
Dim sh As Object
Dim s As String
s = "<!DOCTYPE html " & Chr( 34 ) & "-//W3C//DTD XHTML 1.0 Strict//EN" & Chr( 34 ) & vbCrLf & " " & Chr( 34 ) & "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" & Chr( 34 ) & ">" & _
"<html xmlns=" & Chr( 34 ) & "http://www.w3.org/1999/xhtml" & Chr( 34 ) & " xmlns:v=" & Chr( 34 ) & "urn:schemas-microsoft-com:vml" & Chr( 34 ) & ">" & _
"<head>" & _
"<meta http-equiv=" & Chr( 34 ) & "content-type" & Chr( 34 ) & " content=" & Chr( 34 ) & "text/html; charset=utf-8" & Chr( 34 ) & "/>" & _
"<title>Google Maps JavaScript API Example</title>" & _
"<script src=" & Chr( 34 ) & "http://maps.google.com/maps?file=api&v=2&key=ABQIAAAANXVI9tpLMeFw9fhBVNCCnhT2yXp_ZAY8_ufC3CFXhHIE1NvwkxQREzUkAEXLdH3qLiOgDtg1KVxpog" & Chr( 34 ) & _
" type=" & Chr( 34 ) & "text/javascript" & Chr( 34 ) & "></script>" & _
"<script type=" & Chr( 34 ) & "text/javascript" & Chr( 34 ) & ">" & _
"google.load(" & Chr( 34 ) & "maps" & Chr( 34 ) & ", " & Chr( 34 ) & "2.x" & Chr( 34 ) & "); " & _
"function initialize() {" & _
"if (GBrowserIsCompatible()) {" & _
"var map = new GMap2(document.getElementById(" & Chr( 34 ) & "map_canvas" & Chr( 34 ) & "));" & _
"map.setCenter(new GLatLng(37.4419, -122.1419), 13);" & _
"}" & _
"}" & _
"</script>" & _
"</head>" & _
"<body onload=" & Chr( 34 ) & "initialize()" & Chr( 34 ) & " onunload=" & Chr( 34 ) & "GUnload()" & Chr( 34 ) & ">" & _
"<div id=" & Chr( 34 ) & "map_canvas" & Chr( 34 ) & " style=" & Chr( 34 ) & "width: 500px; height: 300px" & Chr( 34 ) & "></div>" & _
"</body>" & _
"</html>"
Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "about:blank"
' Wait for object to be created
While ie.Document Is Nothing
DoEvents
Wend
' 1 Variant - don't work
'------------------------
' Load page - Google Maps JavaScript API Example
ie.Document.Open
ie.Document.write s
ie.Document.Close
ie.Visible = True
' 2 Variant - work
'----------------------
' save variable s in file
Set fs = CreateObject("Scripting.FileSystemObject")
Set f1 = fs.CreateTextFile("c:\testfile.html", True)
f1.WriteLine (s)
f1.Close
' run it
Set sh = CreateObject("Shell.Application")
sh.Open "c:\testfile.html"
End Sub
Получается есть какие-то различие или нюансы в использовании функции ie.Document.write s. Но вот какие?