我使用下面的代码将google maps api中的xml数据导入excel,以快速获取Lat和Lng以获取位置列表。我有它工作,但由于我的要求速度,它跳过了一些。我删除了那些工作表,并实现了一些代码来检查工作表是否存在(第二和第四段代码)。但是我不能让它正常工作,因为它不会因为某种原因认出纸张不存在。有人会暗示我犯了错误吗?
Sub Import_Xml()
Dim row As Integer
Dim strTargetFile As String
Dim wb As Workbook
Call Fill_Array_Locations
TotalRowsData = ThisWorkbook.Worksheets("Locations").UsedRange.Rows.Count
For row = 50 To TotalRowsData
Application.ScreenUpdating = False
For i = 1 To Worksheets.Count
If Worksheets(i).Name = Locations_Array(row, 1) Then
exists = True
End If
Next i
If Not exists Then
Sheets.Add.Name = Locations_Array(row, 1)
strTargetFile = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & Locations_Array(row, 2) & " " & Locations_Array(row, 3) & "&components=country:" & Locations_Array(row, 4) & "&key=********"
Set wb = Workbooks.OpenXML(Filename:=strTargetFile, LoadOption:=xlXmlLoadImportToList)
Application.Wait (Now + TimeValue("0:00:01"))
wb.Sheets(1).UsedRange.Copy ThisWorkbook.Sheets(Locations_Array(row, 1)).Range("A1")
wb.Close False
End If
Next row
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
exists = Empty
Next row
Application.ScreenUpdating = True
End Sub
第一行完成后,存在值为TRUE,但永远不会丢失它。插入exists = Empty,然后转到下一行修复问题。
答案 1 :(得分:0)
要检查的一些事项:
您是否拥有名为“位置”的工作表,它是否为工作表。如果您不确定将Worksheets("Locations")
替换为Sheets("Locations")
或确切名称
此行:If Worksheets(i).Name = Locations_Array(row, 1) Then
正在尝试查找工作表“CodeName”而不是工作表(可见)名称。您可以在VBA编辑器名称,左上方窗格中看到代码名称,然后相应地更新Locations_Array(row, 1)
您应该确保在第3段代码中引用正确的表格:wb.Sheets(1) - 验证wb.Sheets(1)CodeName并确认它是您需要的
< / LI> 醇>