我在VBA Excel中使用makro。它将60000行的数据从文本文件中导入到60000行和5列中,每次使用它时,Excel文件的内存将使用越来越多的内存(高达千兆字节)。makro只覆盖现有的单元格。
马克罗:
Const PC As String = "\\pe-copystation\elektronik"
Const Bewegungsjournal_Daten As String = PC & "\MP100D\Elektro\inbox\BEWEGUNG.opj"
Sub Datenimport()
Dim Temp As String
Dim Artikel As String
Dim i As Integer
Dim Zeile, Spalte As Integer
Dim Datum As Date
Dim Artikeldaten As Variant
Const Tabelle As String = "Tabelle1"
Sheets(Tabelle).Select
Cells.Select
Selection.ClearContents
Range("A1").Select
Application.Calculation = xlManual
Zeile = 1 'Startzeile
Open Bewegungsjournal_Daten For Input As #1
Do
Line Input #1, Temp$
'Pos = InStr(Temp$, "$S")
Artikeldaten = Split(Temp, "$")
Zeile = Zeile + 1
Artikel = Right(Artikeldaten(1), Len(Artikeldaten(1)) - 1)
'MsgBox (Artikeldaten(1))
Sheets(Tabelle).Cells(Zeile, 1) = Artikel
Artikel = Right(Artikeldaten(2), Len(Artikeldaten(2)) - 1) 'Vorzeichen
Sheets(Tabelle).Cells(Zeile, 2) = Artikel
Artikel = Right(Artikeldaten(3), Len(Artikeldaten(3)) - 1) 'Menge
Sheets(Tabelle).Cells(Zeile, 3) = Artikel
Artikel = (Right(Artikeldaten(7), Len(Artikeldaten(7)) - 3)) 'Datum
Artikel = Left(Artikel, 2) & "." & Mid(Artikel, 3, 2) & "." & Right(Artikel, 2)
Sheets(Tabelle).Cells(Zeile, 4) = CDate(Artikel)
Artikel = Right(Artikeldaten(8), Len(Artikeldaten(8)) - 3) 'Zeit
Artikel = Left(Artikel, 2) & ":" & Right(Artikel, 2)
Sheets(Tabelle).Cells(Zeile, 5) = Artikel
Artikel = Right(Artikeldaten(9), Len(Artikeldaten(9)) - 3) 'Benutzer
Sheets(Tabelle).Cells(Zeile, 6) = Artikel
Loop Until EOF(1)
Close #1
Application.Calculation = xlAutomatic 'Autoberechnung wieder anschalten
End Sub发布于 2022-02-16 09:05:56
我不是VBA专家,但对我来说,导入数据听起来像是PowerQuery的工作。可以使用PowerShell/VBA使用RefreshAll方法触发数据刷新。
基本上,我要做的是用有问题的CSV文件设置一个数据加载,如果您不想手动触发刷新,那么就用VBA执行它。PowerQuery刷新相同的表,因此就像您的脚本一样,它将覆盖所有单元格。
以下是如何设置数据加载(不是我的网站)的快速链接:https://www.myexcelonline.com/blog/import-data-csv-using-power-query-get-transform/
https://stackoverflow.com/questions/71138075
复制相似问题