Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ladebalken bei CSV Laden

Ladebalken bei CSV Laden
29.10.2015 17:38:34
Sven
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

    3
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Ladebalken bei CSV Laden
    29.10.2015 17:56:14
    Daniel
    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

    Anzeige
    AW: Ladebalken bei CSV Laden
    29.10.2015 18:19:20
    Tino
    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

    Anzeige
    AW: Ladebalken bei CSV Laden
    30.10.2015 11:31:05
    Sven
    Danke das ist super

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige