Ladebalken bei CSV Laden

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Ladebalken bei CSV Laden
von: Sven
Geschrieben am: 29.10.2015 17:38:34

Hallo Zusammen,
ich lade ein ganzes Verzeichnis Txt-files per VBA ein. Dafür würde ich gerne einen Ladebalken anzeigen lassen. Den Ladebalken selbst habe ich bereits bei einem guten Beispiel gefunden.
Jedoch felt mir die Anzahl der geladenen Dateien damit der Balken weiss wie lang er gehen soll. Wie kann ich die Variable im folgenden Code bestimmen?

  • 
    Public Sub importcsv()
       Dim fd As FileDialog
       Dim strFolder As String
       Dim strName As String
        
    Application.ScreenUpdating = False ' screen einfrieren
       panelcounter = 0
        
       Set fd = Application.FileDialog(msoFileDialogFolderPicker)
       If fd.Show <> -1 Then Exit Sub
       ' taB STOP getrennte daten einfügen
       strFolder = fd.SelectedItems(1) & "\"
       strName = Dir(strFolder & "*.txt")
    '********************** Lade Balken  **************************
     lngProgressCountMax = ??????
    '**************************************************************
       While Len(strName) > 0
          Workbooks.OpenText Filename:=strFolder & strName, Local:=True
          ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, _
     _
     _
     _
     0)
          strName = Dir
          'schliesst die datei danach.
       ActiveWorkbook.Close False
     
    lngProgressCounter = lngProgressCounter + 1 'Ladebalken Zähler
       Wend
       
      Worksheets("Start").Activate
    End Sub


  • Vg
    Sven

    Bild

    Betrifft: AW: Ladebalken bei CSV Laden
    von: Daniel
    Geschrieben am: 29.10.2015 17:56:14
    Hi
    in der While-Wend-Schleife sammelst du erstmal nur die Dateinamen und öffnest dann erst die Dateien in einer zweiten Schleife über das Dateinamenarray.
    dann weisst du vor der Zeitintensiven Aktion (öffen-kopieren) wieviele Dateien es sind.

    Public Sub importcsv()
       Dim fd As FileDialog
       Dim strFolder As String
       Dim strName As String
        Dim strDateien As String
        Dim arrDateien As String
        Dim i As Long
    Application.ScreenUpdating = False ' screen einfrieren
       panelcounter = 0
        
       Set fd = Application.FileDialog(msoFileDialogFolderPicker)
       If fd.Show <> -1 Then Exit Sub
       ' taB STOP getrennte daten einfügen
       strFolder = fd.SelectedItems(1) & "\"
       strName = Dir(strFolder & "*.txt")
       While Len(strName) > 0
            strDatei = strDateien & "|" & strName
            strName = Dir
       Wend
       
       arrDateien = Split(strDateien, "|")
       
       For i = 1 To UBound(arrDateien)
            
        Application.StatusBar = "In Arbeit: Datei " & i & " von " & UBound(arrDateien)
          
          Workbooks.OpenText Filename:=strFolder & arrDateien(i), Local:=True
          ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, _
     0)
        
          'schliesst die datei danach.
            ActiveWorkbook.Close False
     
        lngProgressCounter = i 'Ladebalken Zähler
        Next
       
    Application.StatusBar = False
      Worksheets("Start").Activate
    End Sub
    Gruß´Daniel

    Bild

    Betrifft: AW: Ladebalken bei CSV Laden
    von: Tino
    Geschrieben am: 29.10.2015 18:19:20
    Hallo,
    du kannst die Dateien zuvor in eine Array aufnehmen um die Anzahl zu ermitteln.
    Ich würde keine Balken verwenden, dies bremst alles aus.
    Beim öffnen einer anderen Datei hast du auch nicht viel davon wenn dieser Balken auf der Tabelle ist,
    müsste also eine UserForm herhalten.
    Ich würde die Statusleiste verwenden um die nötigen Information zu erhalten,
    geht schnell und bremst dein Code nicht zu stark.
    Beispiel:

    Public Sub importcsv()
    Dim fd As FileDialog
    Dim strFolder As String
    Dim strName As String
    Dim ArFiles(), i%
     
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show <> -1 Then Exit Sub
    strFolder = fd.SelectedItems(1) & "\"
    strName = Dir(strFolder & "*.txt")
    Do While strName <> ""
         i = i + 1
         ReDim Preserve ArFiles(1 To 2, 1 To i)
         ArFiles(1, i) = strFolder & strName
         ArFiles(2, i) = strName
         strName = Dir()
    Loop
    If i > 0 Then
        Application.ScreenUpdating = False
         For i = LBound(ArFiles, 2) To UBound(ArFiles, 2)
             Application.StatusBar = "Bearbeite File: " & i & " von " & _
                    UBound(ArFiles, 2) & " | " & ArFiles(2, i)
             
             Workbooks.OpenText Filename:=ArFiles(1, i), Local:=True
             ActiveSheet.UsedRange.Copy _
                ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
             ActiveWorkbook.Close False
         Next i
         Application.StatusBar = False
         Application.ScreenUpdating = True
    End If
    End Sub
    Gruß Tino

    Bild

    Betrifft: AW: Ladebalken bei CSV Laden
    von: Sven
    Geschrieben am: 30.10.2015 11:31:05
    Danke das ist super

     Bild

    Beiträge aus den Excel-Beispielen zum Thema "VBA - kombinierte Auflistung aus Matrix"