VBA复印纸在一个白纸中滞后,在另一白纸中不滞后

时间:2019-01-10 23:57:29

标签: excel vba performance

我的VBA代码可在一个工作簿上使用,而不能在另一个工作簿上使用。

摘要代码:

在两者中产生所需的最终结果 却要花一分钟左右的时间 但在其他方面是相同的 工作表名称正确

.Sheets(Array(“ TotalReimbursement”,“ ReadyForExport”))。Copy 是落后的地方

我应该在哪里查找错误?鉴于相同的代码在另一个电子表格中可以正常工作,看来代码本身看起来是错误的地方。

Sub EmailReimbursementRequest()

Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim TheActiveWindow As Window
Dim TempWindow As Window

With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With

Set Sourcewb = ActiveWorkbook

With Sourcewb
    Set TheActiveWindow = ActiveWindow
    Set TempWindow = .NewWindow
    .Sheets(Array("TotalReimbursement", "ReadyForExport")).Copy
End With

TempWindow.Close

Set Destwb = ActiveWorkbook

从那里获取更多代码。...应在大约一秒钟的时间内生成带有附件的电子邮件。

1 个答案:

答案 0 :(得分:1)

可能是由于许多问题造成的:

  • 大量需要重新计算的公式
  • 链接到外部资源的公式,需要一段时间才能重新计算
  • 大量格式设置(例如,如果边框/阴影已应用于整个工作表而不是仅应用于相关区域)
  • 较大的“使用区域”
  • 大量命名范围
  • 大量对象和嵌入式图像

首先删除不必要的格式,清除所有未使用的单元格中的所有内容(选择数据下方的所有行,然后清除并删除,然后选择数据右侧的所有列,然后清除并删除),保存并重新打开,然后尝试运行再次。

此外,创建临时窗口的目的是什么?从可见代码看来,这似乎是不必要的...