为什么我的KML Google地球位置会在屏幕外打印?

时间:2009-05-27 23:38:32

标签: kml excel-vba vba excel

我正在使用此代码制作KML文件:

Sub Create_KML()
' Builds KML from spread sheet
' Keyboard Shortcut: Ctrl+c
'
'Trash = Application _
'    .GetOpenFilename("Text Files (*.txt), *.txt")
'Open File For Random As #1 ' "c:\Users\mwilson\Desktop\Trash.txt
'Open "c:\Users\mwilson\Desktop\Test Google\Trash.txt" For Output As #1
Open "C:\Documents and Settings\eecoop\Desktop\10 day avg rssi Google kml\Trash.kml" For Output As #1
y = 9
Address = Range("B" & y) ' "203 Jordan, Tallassee, AL"
While Address <> ""
'**************
Print #1, "<?xml version=""1.0"" encoding=""utf-8""?>"         '1
Print #1, "<kml xmlns=""http://www.opengis.net/kml/2.2"">"     '2
Print #1, "   <Placemark>"                                        '3
Print #1, "     <name>George</name>"                           '4
Print #1, "        <Style>"                                     '5
Print #1, "           <IconStyle>"                              '6
Print #1, "               <scale>.3</scale>"                    '7
Print #1, "               <Icon>"                               '8
Print #1, "                  <href>Green.png</href>"             '9
Print #1, "               </Icon>"                             '10
Print #1, "            </IconStyle>"                            '11
Print #1, "        </Style>"                                     '12
Print #1, "     <address>" & Address & "</address>"    '13
Print #1, " </Placemark>"                                        '14
Print #1, "</kml>"                                               '15
Print #1, " "
'********
'    Range("A2").Select
        ID = ActiveCell.FormulaR1C1
'    Range("B2").Select
        Address = ActiveCell.FormulaR1C1
'    Range("C2").Select
'        RSSI = ActiveCell.FormulaR1C1
'    Trash.Write ("hi")

'    Print #1, ID
y = y + 1
Address = Range("B" & y)
Wend
    Close #1
End Sub

在大多数情况下,它工作得很好,除了当我尝试将Address设置为等于Range("B" & Y)并具有字符串的事实时:

  

203 Jordan,Tallassee,AL

当我这样做时,它会将它打印在Google Earth的屏幕上,而如果我直接使用引用的地址,即:     地址=“203 Jordan,Tallassee,AL”

它工作得很好并且绘制了应该在哪里以及如何应用。我试图确保从Excel单元格中拉出时Address被格式化为文本,但错误仍在继续。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

尝试使用文本编辑器打开KML,看看{2}中<address>行的格式是否有所不同。

答案 1 :(得分:0)

我会尝试使用

Address("B" & y).Value
cstr(Address("B" & y))

答案 2 :(得分:0)

我明白了。输入的两个项目有所不同。

在我从老板那里得到的Excel文件中,他拼错了Tallassee。他只使用了一个。我也不得不改变:

> & Address & <

为:

>; Address; "<

现在它运作正常。此外,当您同时绘制大量积分时,Google地球尚未到达的积分将会显示为不在屏幕上。