Easy VBA宏列出所有工作表生成错误:类型不匹配

lau*_*ens 3 excel vba for-loop excel-2007 excel-vba

我正在制作一个ExcelComparer但是我遇到了一个可能明显的错误,我显然错过了一些东西.

我在Excel 2007中运行vba宏

我得到的确切错误是"运行时错误13:类型不匹配"当循环尝试获取第二个worksheet.name时会发生这种情况.
因此,第一个sheetname返回正常

在下面你找到宏

先谢谢你,L

Sub compare()

Dim strWorkbook1, strWorkbook2 As String
Dim Workbook1, Workbook2 As Workbook
strWorkbook1 = Worksheets("Sheet1").Range("C5") & Worksheets("Sheet1").Range("D5")
strWorkbook2 = Worksheets("Sheet1").Range("C6") & Worksheets("Sheet1").Range("D6")

Set xlapp = CreateObject("Excel.application")
Set Workbook1 = xlapp.Workbooks.Open(strWorkbook1)
xlapp.Visible = False

Dim ws As Worksheet
For Each ws In Workbook1.Sheets
  'ws.Select
  If Not ws.Visible = xlSheetVeryHidden Then
      MsgBox (ws.Name)
  End If
Next ws
xlapp.Close
End Sub
Run Code Online (Sandbox Code Playgroud)

小智 8

将此用于For循环:

For Each ws In Workbook1.Worksheets
Run Code Online (Sandbox Code Playgroud)

从MSDN中,表格和工作表属性之间的区别是:

此属性不返回宏工作表,图表或对话框工作表.使用Sheets属性返回这些工作表以及工作表.您还可以使用专用属性Excel4MacroSheets和Excel4IntlMacroSheets返回宏工作表,使用Charts属性返回图表.