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

时间:2016-02-05 18:30:22

标签: excel vba excel-vba

更新#2:我已将该行从Set ExcelBook = Workbooks.Add拆分为2个单独的行(Workbooks.AddSet 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

更新:我已重新编写代码以删除select / activate,但我仍然遇到随机不匹配错误。当我收到错误时,它似乎确实在创建新工作簿,但在此之后停止(在收到错误并选择“结束”之后,有一个之前没有的空白工作簿)。 / p>

原始说明:我在上面的代码中收到了一个不匹配的错误'设置ExcelBook = Workbooks.add'。奇怪的是,每次都不会发生错误(我似乎无法找到有时为什么会发生错误的模式,而不是其他模式。)

我有另一个宏在' For'中调用以下代码环。有时它会成功完成,有时它会在第一次迭代时出错,有时会在第5次迭代时出错,等等。

有什么想法?

3 个答案:

答案 0 :(得分:0)

错误可能是由于缺乏对范围分配的规范,更改:

Set CopyArea = Range("CopyArea")

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

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

答案 1 :(得分:0)

我将Workbooks.Add更改为Application.Workbooks.Add,似乎有所帮助。

我仍然随机地得到不匹配错误,但它的频率有点低。我将继续尝试进一步完善。

答案 2 :(得分:0)

试试这段代码。创建工作簿并将其分配给同一命令中的变量。

client.execute { "{ \"query\": ..., \"aggs\": ..., ... }" }