Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检查工作表是否存在,没有发现缺少一张_Excel_Vba - Fatal编程技术网

Excel 检查工作表是否存在,没有发现缺少一张

Excel 检查工作表是否存在,没有发现缺少一张,excel,vba,Excel,Vba,我使用下面的代码将xml数据从GoogleMapsAPI导入excel,以快速获取Lat和Lng的位置列表。我让它工作,但由于我请求的速度,它跳过了几个。我删除了那些工作表,并实现了一些代码来检查工作表是否存在(第二段和第四段代码)。然而,我无法让它正常工作,因为它无法识别由于某种原因而不存在的床单。有人能告诉我我犯的错误吗 Sub Import_Xml() Dim row As Integer Dim strTargetFile As String Dim wb As Workbook

我使用下面的代码将xml数据从GoogleMapsAPI导入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

需要检查的几件事:

  • 您是否有名为“位置”的工作表,以及工作表。如果您不确定是否将
    工作表(“位置”)
    替换为
    工作表(“位置”)
    或确切名称

  • 此行:
    如果工作表(i).Name=Locations\u数组(第1行),则
    尝试查找工作表“code Name”而不是工作表(可见)名称。您可以在VBA编辑器名称的左上窗格中看到代码名,然后相应地更新
    Locations\u数组(第1行)

  • 您应该确保在第三个代码中引用了正确的工作表:wb.Sheets(1)-验证wb.Sheets(1)代码名并确认它是您需要的


  • 一旦第一行完成,exists将具有TRUE值,但不会再次丢失它。在转到下一行之前插入exists=Empty修复了问题。

    第1点和第3点不是问题,因为我以前运行过代码,没有添加部分,很抱歉,我之前没有提到这一点。在左上角,我有一张从表2(1)到表214(213)的列表。现在,由于导入XML失败,我删除了一些工作表,它们丢失了。现在它应该找到那些丢失的工作表,并重新运行这些工作表的其余代码。我看到很多名字上下跳动,但它确实与工作表中使用的名字相同。如果你有200多张工作表,你需要确保找到所有的代码名(毫无例外——这可能是导致问题的原因)。仅检查前几个不会显示不匹配。检查所有名称的一种更简单的方法是将工作表添加到手表中,然后展开“名称”节点,它将在列表中显示所有214个名称。我手动检查了它们,它们都被找到了。我还发现,在最后一段代码的下一行之前,我可能需要将exists的值设置回空。有什么建议吗?如果exists是一个布尔值,那么使用exists=Empty(或exists=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
    
    exists = Empty
    Next row
    
    Application.ScreenUpdating = True
    
    End Sub