从工作簿文件夹中收集数据时加快VBA代码



我的VBA代码很慢。我认为当从文件夹中的所有工作簿收集数据时,它正在激活工作表,该文件夹由具有相似数据结构的工作簿组成。

Dim wkbDest As Workbook
Set wkbDest = ThisWorkbook
ChDir strPath
strExtension = Dir("*.xls*")
strPath = 'path_to_folder'
Do While strExtension <> ""
Set wkbSource = Workbooks.Open(strPath & strExtension)
With wkbSource
...
Set rng = Sheets("Inputs").Range("C9:C14")
j = 0
For Each cell In rng
wkbDest.Sheets("Data_collection").Cells(3 + count + j, 9) = cell
j = j + 1
Next cell
Application.CutCopyMode = False
.Close SaveChanges:=False
End With
strExtension = Dir
Loop

有几件事:

  1. 将应用程序屏幕更新转换为假
  2. 将应用程序.计算转换为 xl计算手册
  3. 尽量减少操作次数(复制一个单元格 1000 次比复制 1000 次单元格慢(

    在您的情况下,您可以像这样一次复制所有单元格:

destWorksheet.Range("C9:C14").Offset(count*5,0).Value2 = srcWorksheet.Range("C9:C14").Value2
'Offset depends on the size of your input (I assume you do a simple copy here)

PS:你不需要那个Application.CopyCutMode =假行在这里。您没有使用复制/粘贴方法。

相关内容

最新更新