Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

VBA-Laie brauche Schleife, bin zu dumm

VBA-Laie brauche Schleife, bin zu dumm
23.06.2022 20:10:00
Grand
Hallo zusammen,
folgendes Szenario:
Ich habe es bereits geschafft mit meinen absolut nicht vorhandenen VBA-Kenntnissen ein "Dateiverzeichnis" zu erstellen. Dieses enthält in einer Spalte Zieldateinamen und in den drei Spalten rechts daneben Dateinamen von .csv Dateien mit Daten, die in die Zieldatei importiert werden sollen. Wenn ich das Makro laufen lasse, dann läuft es auch fehlerfrei durch...jetzt ist aber mein Ziel, dass, nachdem die erste Zieldatei fertig ist (und automatisch gespeichert und geschlossen wurde), mit der nächsten Zieldatei (also in der darunterliegenden Spalte) weitergemacht werden soll.
Kann mir bitte jemand die Lösung sagen? Ich weiß, dass es bestimmt sehr simpel ist, aber ich kann VBA halt nicht.
Ich hänge folgend einfach mal einen Teil meines Codes an (mir ist klar, dass er wie Kraut und Rüben aussieht, aber es funktioniert, worauf es mir ankommt:

Sub wbOpen()
Dim strPfad As String
strPfad = ActiveWorkbook.Path & "\" & Worksheets(1).Cells(i, 3).Value & ".xlsb"
Application.ScreenUpdating = False
Windows("Dateiverzeichnis.xlsm").Cells(i, 4).Select
Range(Selection, Selection.End(xlToRight)).Copy
Sheets("INFO").Select
Range("A14").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Dim fname As String
fname = "F:\XXX\" & Worksheets(1).Cells(16, 1).Value & ".csv"
Call Import_1(fname, "XXX_Import")
fname = "F:\XXX\" & Worksheets(1).Cells(14, 1).Value & ".csv"
Call Import_2(fname, "YYY1_Import")
fname = "F:\XXX\" & Worksheets(1).Cells(15, 1).Value & ".csv"
Call Import_3(fname, "YYY2_Import")
ActiveWorkbook.Close True
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: VBA-Laie brauche Schleife, bin zu dumm
23.06.2022 20:13:25
Grand
Sorry, bei mir steht anstatt dem "i" eine 5... das "i" stammt noch vom Rumprobieren.
AW: VBA-Laie brauche Schleife, bin zu dumm
23.06.2022 22:45:38
Yal
Salut Grand (man spricht sich per Vorname im Forum :-) mais si tu preferes Teton... )
achte die Quelle- und Zielworksheet eindeutiger zu definieren, um Instabilität zu vermeiden (funktioniert sonst nur abhängig von wo die Makro aufgerufen wird)
strPfad wird nirgendwo verwendet. Weg damit.
Da es keine regelbasierte Abhängigkeit zwischen 16 & XXX_Import, 15 & YYY1, usw. musst Du die Zweier-Gruppen in einer Liste bringen.
Es kann wie folgt aussehen:

Sub wbOpen()
Dim fname As String
Dim Elt
Dim A
Const cPfad = "F:\XXX\"
Const cListe = "14;YYY1_Import 15;YYY2_Import 16;XXX_Import"
Application.ScreenUpdating = False
Workbooks("Dateiverzeichnis.xlsm").Range(Cells(i, 4), Cells(i, 4).End(xlToRight)).Copy 'i = ?
ThisWorkbook.Sheets("INFO").Range("A14").PasteSpecial Paste:=xlPasteAll
For Each E In Split(cListe) 'split trennt per Default auf Leerzeichen
A = Split(E, ";")
Import_1 cPfad & Worksheets(1).Cells(A(0), 1).Value & ".csv", A(1)
Next
Application.ScreenUpdating = True
ActiveWorkbook.Close True
End Sub
Öffne die Lokalfenster (Ansicht, Lokalfenster) und lass in Schritt-Modus laufen (F8). So kannst Du den Inhalt von E und A besser nachvollziehen.
VG
Yal
Anzeige
Vorname/Name eines US-Nationalparks? LOL owT
23.06.2022 23:20:20
EtoPHG

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige