【问题标题】:Copy large sheet in Excel在 Excel 中复制大工作表
【发布时间】:2017-09-26 11:20:55
【问题描述】:

最近,我遇到了一个似乎很容易解决的问题,但我是 VBA 新手,因此我需要任何建议。 我正在尝试在 VBA 中编写一个宏来复制一个非常大的工作表(大约 140k 行)。

我根据以下主题尝试了不同的方法:

我目前的解决方案是:

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

Dim wb As Workbook
Set wb = ActiveWorkbook
With Workbooks.Open(FileName, ReadOnly:=True)
    .Sheets(1).Visible = -1
    .Sheets(1).Copy before:=wb.Sheets(1)
     wb.Sheets(1).Name = "Name"

    .Close False
End With

当我运行这个宏时 - Excel 没有响应并且程序没有打开文件。我的问题是,是否有可能使用标准 VBA 方法复制大表?代码示例适用于较小的文件。

【问题讨论】:

  • 上述表格有很多公式吗?您是否尝试关闭屏幕更新、计算、事件处理等...?
  • @A.S.H 感谢您的回复。是的,我做到了。
  • 文件名中是否也有一些东西在运行?
  • 可能只是没有足够的板载内存来处理事务的简单问题 - 也许有很多交换文件活动?您使用的是 32 位 Excel 吗? 64 位将提供更好的内存利用率。我知道,我谈到了显而易见的问题,如果你被 32 位(和有限的内存)卡住了,那么你卡在 32 位(和有限的内存):(

标签: vba excel


【解决方案1】:

试试看。对我来说效果很好。

 Sub rten()


 Dim wb As Workbook
 Dim docname As String

 docname = "test1"

    Set wb = ActiveWorkbook
    With Workbooks.Open(docname, ReadOnly:=True)
        .Sheets(1).Visible = -1
        .Sheets(1).Copy before:=wb.Sheets(1)
         wb.Sheets(1).Name = "Name"

        .Close False
    End With


 End Sub

这可能是因为您有一个名为“名称”的工作表,它崩溃了。你有没有检查过你是否已经有了它?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多