更新#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
更新:我已重新编写代码以删除select / activate,但我仍然遇到随机不匹配错误。当我收到错误时,它似乎确实在创建新工作簿,但在此之后停止(在收到错误并选择“结束”之后,有一个之前没有的空白工作簿)。 / p>
原始说明:我在上面的代码中收到了一个不匹配的错误'设置ExcelBook = Workbooks.add'。奇怪的是,每次都不会发生错误(我似乎无法找到有时为什么会发生错误的模式,而不是其他模式。)
我有另一个宏在' For'中调用以下代码环。有时它会成功完成,有时它会在第一次迭代时出错,有时会在第5次迭代时出错,等等。
有什么想法?
答案 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\": ..., ... }" }