更新#2:我将Set ExcelBook = Workbooks.Add
行分割为2行(Workbooks.Add
和Set ExcelBook = ActiveWorkbook
),并且仍然会随机接收错误。它不会每次都发生,但是当它发生时,它会将我指向Workbooks.Add
(仍然收到相同类型的不匹配错误)。添加新工作簿时不匹配错误
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
更新:我已重新工作的代码来删除选择/激活,但我仍然得到随机不匹配的错误。当我收到错误时,似乎是在创建新的工作簿,但在此之后停止(在收到错误并选择'结束'之后,有一个空白工作簿以前不存在)。
原文描述:我在'Set ExcelBook = Workbooks.add'行上面的代码中收到不匹配错误。奇怪的是,每次都不会发生错误(我似乎无法找到任何模式,为什么有时会发生,而不是其他情况)。
我有另一个宏,在'For'循环中调用下面的代码。有时它会成功完成,其他时间会在第一次迭代时出错,第五次迭代中的其他时间等。
有什么想法?
*另一个在'For'循环中调用下面的代码的宏* - 另一个宏是否也写在Excel中?或者你从另一个应用程序调用它?另请阅读[如何避免选择](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) –
是的,所有的宏都在相同的工作簿(AAAAA.xlsm)。我现在会看看链接的帖子,谢谢。 –
当它导致错误时,它是否创建工作簿? – vacip