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

Makro zum oeffnen mehrerer Arbeitsmappen

Makro zum oeffnen mehrerer Arbeitsmappen
12.08.2017 00:34:46
Robert
Hallo zusammen,
Folgendes Problem:
Ich habe mir ein Makro gebastelt, hauptsaechlich mit copy & paste aus Foren.
Bisher hat es auch funktioniert, jetzt auf einmal aber nicht mehr.
Eigentlich habe ich nichts veraendert und verstehe nicht, warum es nicht mehr klappt.
Vielleicht habt ihr eine schnelle Idee.
Die Problemstellung ist, dass ich in einem Ordner fuer jeden Tag eines Monats Daten einer Anlage bekomme. Immer im Format JJJJMMTT
In diesen stehen (fast) immer in der gleichen Spalte die Daten eines gewissen Parameters. Z. B. Spalte A sind immer die Daten zum Datum und dem Zeitpunkt an dem der Wert aufgenommen wird.
Die Daten werden in 5 Minuten Schritten aufgenommen.
Diese Daten muessen nun in ein anderes Arbeitsblatt kopiert werden.
Da ich ungerne 365 x die Datei oeffnen, Bereich markieren, kopieren, ins 2. Zielarbeitsblatt wechseln, einfuegen, wieder zurueck wechseln, die Datei schliessen und von vorne anfangen will, habe ich mir folgendes Makro gebastelt:
Sub Auswertung_mehrerer_Tabellen()
' Auswertung_mehrerer_Tabellen Macro
' Keyboard Shortcut: Ctrl+k
strPath = "C:\Users\XXX\Desktop\test"
'Pfad auswahlen bzw. anpassen.
strExt = ""
Dim strFile As String
If strPath = "" Then
Exit Sub
Else
strFile = Dir(strPath & strExt)
Do While Len(strFile) > 0
Workbooks.Open Filename:=strPath & strFile
Range("AF8").Select
'Anpassen, wenn die Zelle sich aendert.
Range(Selection, Selection.End(xlDown)).Select
'Anpassen, wenn sich der markierte Bereich aendert.
Selection.Copy
Windows("Book1").Activate
'Anpassen, wenn sich die Zieldabei aendert
ActiveSheet.Paste
ActiveCell.Offset(0, 1).Select
Application.DisplayAlerts = False
Workbooks(strFile).Close
strFile = Dir()
Application.DisplayAlerts = True
Loop
End If
Range("A294").Select
'Anpassen, wenn sich die zu markierende Zelle aendert.
End Sub

Eigentlich hat es auch geklappt.
Jetzt aber nicht mehr. Kann mir jemand sagen, was das Problem sein koennte?
Danke erstmal! Und entschuldigt die fehlenden Umlaute.
Beste Gruesse und vielen Dank,
Robert

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

Betreff
Datum
Anwender
Anzeige
AW: Makro zum oeffnen mehrerer Arbeitsmappen
12.08.2017 00:50:36
Robert
Kurze Ergaenzung.
Ich haette gerne meinen Beitrag editiert, weiss aber nicht wie.
Also: Folgender Teil des Makros wird ausgefuehrt: Excel springt in A294
AW: Makro zum oeffnen mehrerer Arbeitsmappen
12.08.2017 03:04:32
fcs
Hallo Robert,
Hauptproblem ist, dass das Trennzeichen "\" zwischen Verzeichnis und Dateiname fehlt.
Sowohl bei der Dateisuche -deshalb findet Dir dann ggf. keine Dateien- als auch beim Öffnen der Dateien -hier käme ggf. eine Fehlermeldung.
Du musst das "\" in strExt einbauen und vor dem Starten der Do-Schleife am Pfad anfügen.
Zusätzlich ist die Prüfung ratsam, ob das Verzeichnis existiert.
Generell kann man aber meist so programmieren, dass Select/Selection-Konstruktionen vermieden werden.
Gruß
Franz
Sub Auswertung_mehrerer_Tabellen()
' Auswertung_mehrerer_Tabellen Macro
' Keyboard Shortcut: Ctrl+k
Dim strPath As String, strExt As String
Dim strFile As String
Dim wkbData As Workbook, wksData As Worksheet
Dim wksZiel As Worksheet, rngZiel As Range
Dim lngSpalte As Long, lngZeile As Long
Set wksZiel = ActiveSheet
Set rngZiel = ActiveCell 'Startzelle für das Einfügen von Daten - Zelle irgendwie fest  _
vorgeben
With wksZiel
'set rngZiel=wksZiel.Range("A1")
'oder
'Set rngZiel = .Cells(1, .Columns.Count).End(xlToLeft) 'letzte Zelle mit Inhalt in  _
Zeile 1
'If Not IsEmpty(rngZiel) Then Set rngZiel = rngZiel.Offset(0, 1)
End With
strPath = "C:\Users\XXX\Desktop\test"
'Pfad auswahlen bzw. anpassen.
strExt = "\*.xls*" 'Alle Excel-Dateien - ggf. anpassen z.B. "\*.csv"
If strPath = "" Then
Exit Sub
ElseIf Dir(strPath, vbDirectory) = "" Then
MsgBox "Verzeichnis " & vbLf & strPath & vbLf & "nicht gefunden!"
Exit Sub
Else
Application.ScreenUpdating = False
strFile = Dir(strPath & strExt)
strPath = strPath & "\"
Do While Len(strFile) > 0
Set wkbData = Workbooks.Open(Filename:=strPath & strFile, ReadOnly:=True)
Set wksData = wkbData.Worksheets(1)
With wksData
'Anpassen, wenn sich der zu kopierende Bereich aendert.
lngSpalte = .Range("AF1").Column
lngZeile = .Cells(.Rows.Count, lngSpalte).End(xlUp).Row
If lngZeile >= 8 Then 'ab Zeile 8 Daten kopieren
.Range(.Cells(8, lngSpalte), .Cells(lngZeile, lngSpalte)).Copy _
Destination:=rngZiel
End If
End With
'Einfügezelle für nächste Datei setzen
Set rngZiel = rngZiel.Offset(0, 1)
Application.DisplayAlerts = False
wkbData.Close savechanges:=False
Application.DisplayAlerts = True
Set wksData = Nothing
Set wkbData = Nothing
strFile = Dir()
Loop
'Anpassen, wenn sich die zu markierende Zelle aendert.
Range("A294").Select
Application.ScreenUpdating = True
End If
End Sub

Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige