首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel使用了很多内存

Excel使用了很多内存
EN

Stack Overflow用户
提问于 2022-02-16 07:56:16
回答 1查看 88关注 0票数 0

我在VBA Excel中使用makro。它将60000行的数据从文本文件中导入到60000行和5列中,每次使用它时,Excel文件的内存将使用越来越多的内存(高达千兆字节)。makro只覆盖现有的单元格。

马克罗:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71138075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档