添加新工作簿时出现不匹配错误

更新#2:我已经从Set ExcelBook = Workbooks.Add行分割(2 Workbooks.AddSet ExcelBook = ActiveWorkbook ),并仍然随机接收错误。 它不会每次都发生,但是当它发生时,它会将我引导到Workbooks.Add行(仍然收到相同types的不匹配错误)。

 Sub NewWorkbook(CompanyName As String, OutputDirectory As String, Scenario As String) Dim ExcelBook As Workbook Dim CopyArea As Range Set CopyArea = Range("CopyArea") Workbooks.Add Set ExcelBook = ActiveWorkbook CopyArea.Copy ExcelBook.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteValues ExcelBook.Sheets("Sheet1").Range("A1").PasteSpecial xlPasteFormats ExcelBook.Sheets("Sheet1").Columns(2).EntireColumn.Delete ExcelBook.Sheets("Sheet1").Rows(6).EntireRow.Delete ExcelBook.Sheets("Sheet1").Cells.EntireColumn.AutoFit Application.DisplayAlerts = False ExcelBook.Close SaveChanges:=True, Filename:=OutputDirectory + "\" + Replace(Replace(Replace(CompanyName, "\", ""), "/", ""), ":", "") + " - " + Scenario + ".xlsx" Application.DisplayAlerts = True Set ExcelBook = Nothing Set CopyArea = Nothing End Sub 

更新:我已经重新工作的代码来删除select/激活,但我仍然得到随机不匹配的错误。 当我收到错误信息时,似乎是在创build新的工作簿,但在此之后停止(在收到错误并select“结束”之后,有一个空白的工作簿以前不存在)。

原始描述:我在上面的代码行'Set ExcelBook = Workbooks.add'收到一个不匹配的错误。 奇怪的是,错误不会发生每一次(我似乎无法find任何模式,为什么有时发生,而不是其他人)。

我有另一个macros在'For'循环中调用下面的代码。 有时会成功完成,其他时间会在第一次迭代中错误出现,第五次迭代中的其他时间等等。

有什么想法吗?

这个错误可能是由于在范围分配上缺乏规范,改变:

 Set CopyArea = Range("CopyArea") 

 Set CopyArea = ThisWorkbook.Sheets(1).Range("CopyArea") 

或将数字更改为表单的名称。

我改变了Workbooks.AddApplication.Workbooks.Add ,它似乎有所帮助。

我仍然随机得到不匹配的错误,但是不太频繁。 我会继续尝试和进一步细化。

试试这个代码。 工作簿被创build并在同一命令中分配给variables。

 Sub Test() NewWorkbook "aZ\A", "\\OutputdirectoryServer\Test", "ScenarioA" End Sub Sub NewWorkbook(CompanyName As String, OutputDirectory As String, Scenario As String) Dim ExcelBook As Workbook Dim CopyArea As Range 'Create a new workbook with 1 sheet and assign it to the variable. Set ExcelBook = Workbooks.Add(xlWBATWorksheet) With ExcelBook.Worksheets(1) 'Update this line to look at the correct sheet. ThisWorkbook.Worksheets("Sheet2").Range("CopyArea").Copy With .Range("A1") .PasteSpecial xlPasteValues .PasteSpecial xlPasteFormats End With .Columns(2).EntireColumn.Delete .Rows(6).EntireRow.Delete .Cells.EntireColumn.AutoFit End With 'Save the file using the correct fileformat. 'For an existing file, the default format is the last file format specified; 'for a new file, the default is the format of the version of Excel being used. Application.DisplayAlerts = False ExcelBook.SaveAs OutputDirectory & "\" & _ Replace(Replace(Replace(CompanyName, "\", ""), "/", ""), ":", "") & " - " & Scenario & ".xlsx", _ FileFormat:=51 ExcelBook.Close False Application.DisplayAlerts = True Set ExcelBook = Nothing Set CopyArea = Nothing End Sub