检查是否存在纸张,没有看到缺少纸张

时间:2015-07-03 11:26:50

标签: excel vba excel-vba

我使用下面的代码将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

2 个答案:

答案 0 :(得分:1)

exists = Empty
Next row

Application.ScreenUpdating = True

End Sub

第一行完成后,存在值为TRUE,但永远不会丢失它。插入exists = Empty,然后转到下一行修复问题。

答案 1 :(得分:0)

要检查的一些事项:

  1. 您是否拥有名为“位置”的工作表,它是否为工作表。如果您不确定将Worksheets("Locations")替换为Sheets("Locations")或确切名称

  2. 此行:If Worksheets(i).Name = Locations_Array(row, 1) Then正在尝试查找工作表“CodeName”而不是工作表(可见)名称。您可以在VBA编辑器名称,左上方窗格中看到代码名称,然后相应地更新Locations_Array(row, 1)

  3. 您应该确保在第3段代码中引用正确的表格:wb.Sheets(1) - 验证wb.Sheets(1)CodeName并确认它是您需要的

    < / LI>