【发布时间】:2021-03-14 08:05:59
【问题描述】:
目的是从 SharePoint 打开工作簿,设置自动过滤器,将过滤后的范围复制到现有工作表中。
两个最长的部分是打开工作簿并粘贴为值。
我想将过滤后的范围存储在数组中,然后将此数组分配给现有工作表(而不是复制粘贴)。
我有另一个模块运行所有的潜艇(这是其中之一)。在该模块中,我从以下内容开始。
Public Sub TurnOffFunctionality()
Application.Calculation = xlCalculationManual
Application.DisplayStatusBar = False
Application.EnableEvents = False
Application.ScreenUpdating = False
End Sub
Sub OpenWorkbookWithPopulation()
strFilePath = *Path to the SharePoint*
period = 202009
file = period & "_FR05_GRIR_Population"
strFileName = file & ".xlsb"
Set wbkopen = Workbooks.Open(strFilePath & strFileName, ReadOnly:=True, UpdateLinks:=False)
With Workbooks(file)
.Worksheets("ERP Extract").AutoFilterMode = False
.Worksheets("ERP Extract").Range("A1").AutoFilter
.Worksheets("ERP Extract").Range("A1").AutoFilter field:=17, Criteria1:="Trade"
.Worksheets("ERP Extract").Range("A1").AutoFilter field:=18, Criteria1:=">" & 90
.Worksheets("ERP Extract").AutoFilter.Range.Copy
cockpit = .Worksheets("Cockpit").Range("C6:C12").Value2
End With
With Workbooks("Master_Template_Working")
.Worksheets("Aged GRNI_Pop").Range("A1").PasteSpecial xlPasteValues
.Worksheets("Instructions").Range("C38:C44") = cockpit
End With
Workbooks(file).Close SaveChanges:=False
End Sub
【问题讨论】:
-
.Worksheets("ERP Extract").AutoFilterMode = False和.Worksheets("ERP Extract").Range("A1").AutoFilter。你的意思是:.Worksheets("ERP Extract").Autofilter.showalldata? -
我看不到您已关闭计算和屏幕更新。如果是这样的话,那可能会有所作为。
-
对不起,我已经编辑了第一篇文章。
-
我怀疑这有什么不同,但你
Set wbkopen但你使用:With Workbooks(file)。更“常用”的方法是with wbkopen。除此之外。打开和保存文件需要时间。尤其是通过网络,当它基于云时可能更糟。我能想到的加快速度的唯一可能方法是在工作簿中打开,使用命令行或类似的东西在打开工作簿时异步下载文件。然后使用您下载的临时工作簿作为您打开的文件。这样文件可能会更快地打开和使用。为什么在没有任何更改的情况下保存文件? -
谢谢,我试试这个方法。嗯我在哪里保存文件?最后一个动作是 SaveChanges:=False 所以我认为没有保存更改?我只需要关闭这一行中的工作簿。
标签: arrays excel vba performance copy