Microsoft Excel

Herbers Excel/VBA-Archiv

Meine Schleife funktioniert nicht beim Auslesen


Betrifft: Meine Schleife funktioniert nicht beim Auslesen von: Chris
Geschrieben am: 04.10.2017 18:24:34

Hallo liebe VBA Freunde,

ich versuche hier Daten aus mehreren Dateien einzulesen und untereinander zuschreiben. Aktuell nimmt er 2 mal die Daten aus der 1. Datei, statt weiter zugehen in die 2. usw usw. Vielleicht sieht jemand von Euch meinen Fehler?

Vielen Dank für Eure Hilfe

'Prozedur

Public Sub Import()
    'Deklaration Variablen
    Dim strPfadDateiQuelle As String        'adresse zb. C:\Ordner\neuer....
    Dim strPfadDateiZiel As String          'adresse zb. C:\Ordner\neuer....
    Dim strNameDateiAktuell As String       'Dateiname zb. win.xlsx
    Dim dateDatumQuelle As Date             'Variable zur Verwendung eines Datums 
                                             zb.: yyyy-mm-_dd
    Dim lngZaehlerZeileQuelle As Long       'Zähler für Zeile
    Dim lngZaehlerSpalteQuelle As Long      'zähler für spalte
    Dim lngZaehlerZeileZiel As Long         'Zähler für Zeile
    Dim lngZaehlerSpalteZiel As Long        'zähler für spalte
 
'Code
    strPfadDateiQuelle = "O:\xxxxx\1st_XX\Team_XXX\02_Auswertung_XXX\"
    strPfadDateiZiel = "H:\xxxx\Projekte\Bla-Übersicht\"
 
'Schleife Datei
    lngZaehlerZeileZiel = 2
    lngZaehlerSpalteZiel = 1
    For dateDatumQuelle = DateSerial(2017, 1, 1) To DateSerial(2017, 12, 31) Step 
    1   'FOR000
        strNameDateiAktuell = "AuswXXX_KW2017" & Format(Format(dateDatumQuelle, 
        "-ww"), "00") &  _"_Team_XXX" & ".xlsx"
        Workbooks.Open strPfadDateiQuelle & strNameDateiAktuell
        
        'Schleife Zeilen
        lngZaehlerZeileQuelle = 2
        lngZaehlerSpalteQuelle = 1
        Do Until (Workbooks(strNameDateiAktuell).Worksheets("AuswMA").Cells( _
        lngZaehlerZeileQuelle, lngZaehlerSpalteQuelle) = "") 'DO000
           
            'Schleife Spalten
            Do Until (Workbooks(strNameDateiAktuell).Worksheets("AuswMA").Cells( 
            _
                lngZaehlerZeileQuelle, lngZaehlerSpalteQuelle) = "") 'DO001
                ThisWorkbook.Worksheets("RohdatenXXX").Cells(lngZaehlerZeileZiel,  
                _
                lngZaehlerSpalteZiel) = _
                Workbooks(strNameDateiAktuell).Worksheets("AuswMA").Cells( _
                 lngZaehlerZeileQuelle, lngZaehlerSpalteQuelle)
                 lngZaehlerSpalteZiel = lngZaehlerSpalteZiel + 1
                 lngZaehlerSpalteQuelle = lngZaehlerSpalteQuelle + 1
            Loop 'DO001
            
            lngZaehlerZeileZiel = lngZaehlerZeileZiel + 1
            lngZaehlerZeileQuelle = lngZaehlerZeileQuelle + 1
            lngZaehlerSpalteZiel = 1
            lngZaehlerSpalteQuelle = 1
        Loop 'DO000
        
        Workbooks(strNameDateiAktuell).Close
    Next 'FOR000
End Sub

  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: AlterDresdner
Geschrieben am: 04.10.2017 20:54:11

Hallo Chris,
ohne Deine Struktur so richtig nachvollziehen zu können:
mit dem Step 1 in For ... FOR000 schaltest Du nur um einen Tag weiter, das führt n-mal zum gleichen Dateinamen.
Vielleicht hilfts, das wünscht der ALteDresdner


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: Chris
Geschrieben am: 05.10.2017 13:52:40

Danke erstmal für deine Antwort, wenn ich diese richtig verstehe meinst du ich müsste Step von 1 auf XX erhöhen? Die Herrausforderung ist, dass die Rohdaten-Dateien die ich importieren möchte immer wöchentlich erstellt werden, und er soll automatisch erkennen wie viele da sind und die vorhandenen alle importieren.

Hilft es dir wenn ich die Excel hochlade und du da den Code siehst (hier verschiebt sich ja doch alles etwas) oder meinst du ich schreib Ihn generell nicht nachvollziehbar?


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: Chris
Geschrieben am: 05.10.2017 16:15:10

Entschuldigt bitte den Doppeltpost

Ich habe gerade herausgefunden warum er die Schleife abbricht (glaube ich jedenfalls)

Ich verwende die Zeile:
For dateDatumQuelle = DateSerial(2017, 1, 1) To DateSerial(2017, 52) Step 1 'FOR000

meine zu öffnenden Dateien lauten aber: AuswXXXX_KW2017-01_Team_Witt
mit DateSerial springt er nicht die Kalenderwochen Angabe KW2017-01 weiter
Richtung 02 etc bis 52. Ich kann aber auch nicht vorgeben 1 to 52, da die Dateien ja immer
erst im Laufe des Jahres in der Regel 2 Wochen nach Ablauf der Woche erstellt werden.

Kennt Ihr hier eine Alternative?


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: ChrisL
Geschrieben am: 05.10.2017 19:17:44

Hi Chris

ungetestet...

i = 1
Do Until i > WorksheetFunction.WeekNum(Now(), 2) - 2
' hier Code
i = i + 1
Loop
cu
Chris


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: Chris
Geschrieben am: 07.10.2017 11:12:15

Hallo Chris,
habe es jetzt wie folgt gelöst:
lngKWwoche = Format(Date, "WW")
For lngKWwoche = 1 To 39 Step 1 'FOR000
strNameDateiAktuell = "AuswCCSI_KW2017-" & Format(lngKWwoche, "00") & "_Team_Wittstock" & ".xlsx"

Allerdings habe ich jetzt das Problem, dass er mir immer eine Fehlermeldung gibt wenn eine KW nicht vorhanden ist. Mir wäre es lieb wenn er abbrechen würde sobald er bei der letzten KW-Datei angekommen ist und mir sagen würde Daten bis KWxx sind geladen


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: ChrisL
Geschrieben am: 08.10.2017 09:58:55

Hi Chris

Prüfen ob Datei vorhanden...

If Len(Dir("C\Test.csv")) > 0 then
  'weiter im Makro
Else
  Exit Sub
End If

In Schleife...
For i = 1 To 52
  If Len(Dir("C\Test" & Format(i, "00") & ".csv")) > 0 then
    'weiter im Makro
  Else
    Exit Sub
  End If
Next i
cu
Chris


  

Betrifft: AW: Meine Schleife funktioniert nicht beim Auslesen von: Chris
Geschrieben am: 10.10.2017 12:26:08

Vielen Dank ChrisL, es funktioniert :)


Beiträge aus den Excel-Beispielen zum Thema "Meine Schleife funktioniert nicht beim Auslesen"