【问题标题】:How to add a copy of a sheet in another workbook without opening the workbook如何在不打开工作簿的情况下在另一个工作簿中添加工作表的副本
【发布时间】:2019-06-19 21:52:23
【问题描述】:

我正在设置一个代码,它将复制另一个工作簿中的最后一张工作表并将其添加到所述工作簿的末尾。但是我不希望我的代码打开工作簿。

我曾尝试在我的代码前后使用 application.ScreenUpdating,但它似乎不起作用。我还尝试将屏幕更新代码放在子的开头和结尾。

With otherwb
   Application.ScreenUpdating = False
   .Sheets(.Sheets.count).Copy After:=.Sheets(.Sheets.count)
   Application.ScreenUpdating = True
End With

我是否使用了错误的 Screenupdating 代码,或者是否有原因导致工作簿仍在为我打开?

【问题讨论】:

  • 不打开工作簿是不可能的。如果要编辑工作簿或添加工作表,则需要打开工作簿。但是您可以在后台执行此操作(因此用户看不到它)。您需要在后台打开第二个 Excel 实例。看看这里:stackoverflow.com/questions/579797/…
  • 您发布的链接中的几个用户建议“Application.screenupdating = False”。但是,如上所述,它对我不起作用。有什么想法吗?
  • 不看第一个答案。它展示了如何在后台打开一个新的 Excel,这样用户就看不到它了。

标签: excel vba


【解决方案1】:

如果不打开文件,您无法在 VBA 中实现此目的。

但是,您可以创建一个 Application 对象,并将其可见性设置为 false,因此用户不会注意到此实例正在运行:

Dim app as Excel.Application 
app.Visible = false 
'do stuff

至于为什么ScreenUpdating 不起作用... 您正在暂停运行代码的应用程序实例的屏幕更新。不适用于您要创建的应用程序实例(在后台不可见地运行)。

【讨论】:

    猜你喜欢
    • 2013-08-16
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2012-07-19
    相关资源
    最近更新 更多