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