朋友布置作业,需要把一系列地点坐标转换成奥维互动地图能标识的kml文件(文本文件)。
很久没写vba代码了。
在把字符串写入kml文件的过程中,发现写入需要用 print #filenumber, str 的格式,而不是
write #filenumber, str 的格式。
用write #filenumber, str 的格式时,文本文档中会会得到额外的双引号。但是在vba的立即窗口中,输出是正常的(没有多余双引号的)。
代码如下。
可以尝试把 print 改为 write, 看看生成的kml文件有何不同?
Option Explicit
Public Sub coords2kml()
'convert coordinates to kml for 奥维互动地图
Dim kml_head As String 'unchanged text at begining of file
Dim kml_tail As String 'unchanged text at end of file
Dim kml_line As String 'line matches with individual coordinates
Dim name_cun As String 'jiezhen-cunwei-cun
Dim longtitude_cun As String
Dim latitude_cun As String
Dim kml_filename As String
kml_filename = "kml_test.kml"
kml_head = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & "?>" & Chr(13) & _
"<kml xmlns=" & Chr(34) & "http://www.opengis.net/kml/2.2" & Chr(34) & " xmlns:gx=" & Chr(34) & "http://www.google.com/kml/ext/2.2" & Chr(34) & " xmlns:kml=" & Chr(34) & "http://www.opengis.net/kml/2.2" & Chr(34) & " xmlns:atom=" & Chr(34) & "http://www.w3.org/2005/Atom" & Chr(34) & ">" & Chr(13) & _
"<Document>"
kml_tail = "</Document>" & Chr(13) & "</kml>"
'create kml file
Open kml_filename For Append As #1
Print #1, kml_head
Print #1, kml_tail
Close #1
End Sub
希望的输出结果如下:
<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom"> <Document>
</Document> </kml>
而把上述代码中的 print 改为 write 时,结果是这样的,注意其中多余的双引号:
"<?xml version=""1.0"" encoding=""UTF-8""?> <kml xmlns=""http://www.opengis.net/kml/2.2"" xmlns:gx=""http://www.google.com/kml/ext/2.2"" xmlns:kml=""http://www.opengis.net/kml/2.2"" xmlns:atom=""http://www.w3.org/2005/Atom""> <Document>"
"</Document> </kml>"