Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1764to1768
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

Schleife

Schleife
15.06.2020 15:03:18
Julia
Hallo liebe Helfer,
ich stehe vor folgendem Problem:
Mit einem Programm habe ich jede Menge Excel Files erstellt.
(Mehr oder weniger ein File pro Stunde (Tag) über ein Jahr gerechnet.)
Die Files heißen alle z.b abcd0, abcd1, abcd2 aber manche Stunden (Nacht) fehlen auch
also im Endeffekt:
abcd0
abcd1
abcd2
abcd3
abcd20
abcd21
....
abcd8760
diese Files liegen alle in einem Ordner.
Mein Ziel ist es aus jeder dieser Files die Spalte G - hier befinden sich 20 werte - zu kopieren
und in einer neuen Exceldatei "neu" zusammenzuführen.
Über 'Macro aufzeichnen' hab ich es bishher, mit nur wenigen Excelfiles so gemacht:
ChDir "C:\Users\x\Documents\x"
Workbooks.Open Filename:= _
"C:\Users\x\Documents\x\abcd0.csv"
Range("G1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("neu .xlsx").Activate
Range("A1").Select
ActiveSheet.Paste
Application.WindowState = xlNormal
Windows("abcd0.csv").Activate
ActiveWindow.Close
und für das nächste file
ChDir "C:\Users\x\Documents\x"
Workbooks.Open Filename:= _
"C:\Users\x\Documents\x\abcd1.csv"
Range("G1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Windows("neu .xlsx").Activate
Range("B1").Select
ActiveSheet.Paste
Application.WindowState = xlNormal
Windows("abcd1.csv").Activate
ActiveWindow.Close
Aber für meine vielen Files ist das händisch zu viel Aufwand.
Wie kann ich also festlegen, dass quasi der Reihe nach alle Files geöffnet werden, Spalte G kopiert wird und in "neu" eingefügt wird (pro File immer in eine neue Spalte natürlich)
Ideal wäre:
liegt kein File vor (in meinem Beispiel hier gibt es abcd4-abcd19 nicht) sollte eine Spalte freigehalten werden
"neu":
SpalteA SpalteB SpalteC SpalteD SpalteE .... SpalteT SpalteU SpalteV ...
abcd0 abcd1 abcd2 abcd3 [leer] ... [leer] abcd20 abcd21 ...
Ist das möglich?
Ich würde mich wahnsinnig über Hilfe freuen!
Liebe Grüße

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife
15.06.2020 15:39:40
UweD
Hallo
so?

Option Explicit
Sub alle_Dateien_Verzeichnis2() '
On Error GoTo Fehler
Dim PreName As String, Pfad As String, Ext As String, Datei As String
Dim Nummer As Variant, TBx As Worksheet, TBN As Worksheet, SP1 As Integer, I As Integer
Pfad = "E:\Temp\" '**** mit \
PreName = "abcd"
Ext = ".xlsx"
Application.ScreenUpdating = False
Set TBN = ThisWorkbook.Sheets("Tabelle1") 'Zieltabelle
SP1 = 7 'Lesen aus Spalte G
Datei = Dir(Pfad & PreName & "*" & Ext)
Do While Len(Datei) > 0
I = I + 1
Nummer = Replace(Datei, PreName, "") 'Teil 1 weg
Nummer = CInt(Replace(Nummer, Ext, "")) 'Teil 2 weg
Workbooks.Open Filename:=Pfad & Datei
Set TBx = ActiveWorkbook.Sheets(1) 'gelesen wird immer aus dem 1. Blatt
'Copiert Spalte G in Zielspalte
'Zielspalte ist Spalte A verschoben um die Nummer hinter abcd
' Also abcd0 in A, abcd1 in B, abcd3 in D...
TBx.Columns(SP1).Copy TBN.Columns(1).Offset(0, Nummer)
Workbooks(Datei).Close False 'Wieder schliessen ohne speichern
Datei = Dir() ' nächste Datei
Loop
MsgBox I & ": Dateien verarbeitet"
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & _
Err.Number & vbLf & Err.Description: Err.Clear
End Sub
LG UweD
Anzeige
AW: Schleife
15.06.2020 17:31:04
Julia
VIELEN VIELEN DANK UweD!!!!!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige