gpt4 book ai didi

Excel vba更快地读取大量文件

转载 作者:行者123 更新时间:2023-12-04 21:02:22 25 4
gpt4 key购买 nike

我编写了一个代码,它查找所有以特定名称开头的文件并从中读取数据,文件夹中通常有 1k 个文件或更多文件,我编写了一个小基准测试并意识到我的代码每秒读取大约 1 个文件,那就是很多时间。我对 VBA 很陌生,我想知道我是否采取了错误的方法?
功能代码:

Function ReadDataFromWorksheet()
Dim XL As Excel.Application
Dim WBK As Excel.Workbook
Dim i As Integer

i = 1

Set XL = CreateObject("Excel.Application")

Do While i < (ArraySize + 1)
Set WBK = XL.Workbooks.Open("PATH TO FILE")
Array(i).Data1 = WBK.ActiveSheet.Range("F6").Value
WBK.Close SaveChanges:=False
i = i + 1
Loop

Set XL = Nothing
End Function

对不起我的拼写错误!...提前感谢您的帮助!

最佳答案

以下是您应该如何使用 Dir :

Function ReadDataFromWorksheet() As Variant

With Application
.EnableEvents = False 'stop executing this code until we are done
.DisplayAlerts = False
.ScreenUpdating = False
'.Calculation = xlCalculationManual
End With

Dim XL As Excel.Application
Dim WBK As Excel.Workbook
Dim FileName As String, _
FolderPath As String, _
Results()
ReDim Results(0)

On Error Resume Next
Set XL = GetObject(, "Excel.Application")
If Err.Number > 0 Then Set XL = CreateObject("Excel.Application")
On Error GoTo 0

FolderPath = "C:/test/"
FileName = Dir(FolderPath & "*.xlsx")

Do While FileName <> ""
Set WBK = XL.Workbooks.Open(FolderPath & FileName)
Results(UBound(Results)) = WBK.ActiveSheet.Range("F6").Value
WBK.Close SaveChanges:=False
ReDim Preserve Results(UBound(Results) + 1)
FileName = Dir
Loop
ReDim Preserve Results(UBound(Results) - 1)

Set WBK = Nothing
Set XL = Nothing

With Application
.EnableEvents = True
.DisplayAlerts = True
.ScreenUpdating = True
'.Calculation = xlCalculationAutomatic
End With

ReadDataFromWorksheet = Results
End Function

关于Excel vba更快地读取大量文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33806411/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com