Krautkanal.com

Veröffentlicht am 2016-11-25 06:31:53 in /prog/

/prog/ 9532: Bernd, suche Hilfe bei einem VBA Makro. Ich habe folge...

liang Avatar
liang:#9532

Bernd, suche Hilfe bei einem VBA Makro.
Ich habe folgendes Problem:
Habe viele Excel-Dateien, die gleich aufgebaut sind. Daraus soll ein Tabellenblatt, welches immer gleich benannt und aufgebaut ist, in einer neuen Master Excel-Datei untereinander zusammengefasst werden. In Spalte A der Master Datei soll der Datei-Name und ab Spalte B dann die zusammengeführten Werte stehen.

Hier mein bisheriger Code:
Sub Sheet2_Button1_Click()
Dim oTargetSheet As Object
Dim oSourceBook As Object
Dim sPfad As String
Dim sDatei As String
Dim lErgebnisZeile As Long
Dim s As Long
Dim z As Long

Application.ScreenUpdating = False 'Das "Flackern" ausstellen

'Schritt 1: Neues Arbeitsblatt für die Ergebnisse erstellen
Set oTargetSheet = ActiveWorkbook.Sheets.Add
lErgebnisZeile = 1 'Ergebnisse eintragen ab Zeile 1

'Schritt 2: Schleife über alle Excel Dateien in einem Verzeichnis
sPfad = "C:\Users\XXXX\Desktop\New folder"
sDatei = Dir(CStr(sPfad & "Datei (*.xlsx),*.xlsx")) 'Alle Excel Dateien

Do While sDatei <> ""

'Schritt 3: öffnen der Datei und Datenübertragung
Set oSourceBook = Workbooks.Open(sPfad & sDatei, False, True) 'nur lesend öffnen

'Datenübertragung alle genutzten Zeilen und Spalten
For z = 1 To oSourceBook.Sheets("Tabelle1").UsedRange.Rows.Count
'Keine Leerzeilen verarbeiten
If Trim(CStr(oSourceBook.Sheets("Tabelle1").Cells(z, 1).Value)) <> "" Then
For s = 1 To oSourceBook.Sheets("Tabelle1").UsedRange.Columns.Count
'Spalte 1 - Dateinamen
oTargetSheet.Cells(lErgebnisZeile, 1).Value = sDatei
'Spalte 2 bis n - Tabelleninhalte des Arbeitsblattes "Tabelle1"
oTargetSheet.Cells(lErgebnisZeile, s + 1).Value = _
oSourceBook.Sheets("Tabelle1").Cells(z, s).Value
Next s
lErgebnisZeile = lErgebnisZeile + 1
End If
Next z

'Schritt 4: Datei wieder zu machen und nächste Schleifenrunde
oSourceBook.Close False 'nicht speichern

'Nächste Datei
sDatei = Dir()

Loop

Application.ScreenUpdating = True 'Das Bildschirm-Aktualisieren wieder einschalten

'Variablen aufräumen
Set oTargetSheet = Nothing
Set oSourceBook = Nothing

End Sub

Makro läuft nicht so ganz, es wird nur ein neues leeres Arbeitsblatt erstellt.

carloscrvntsg Avatar
carloscrvntsg:#9549

Bei VBA ist doch auch ein Debugger dabei mit Variablenüberwachung, oder? Kannst Du nicht damit dem Problem auf die Schliche kommen?

Neuste Fäden in diesem Brett: