Supportnet / Forum / Tabellenkalkulation
Wie kann ich mehrere "fast" gleichlautende Dateien nacheinander via einem Makro öffnen ? Datei heissen xxx1 xxx2 xxx3 xxx4 usw...
Frage
Hallo,
ich möchte ein Makro schreiben mit welchem ich nacheinander 100 Dateien öffne, etwas bearbeiten lasse (das ist nicht das Prob) und sie nach der Bearbeitung wieder speicher und schliesse.
Das eiegntliche Prob ist das alle Datein denselben Namen tragen nur mit einer Nummerierung. Also xxx 1 dann xxx2 xxx3 usw. bis 100.
Ergo müsste ich im Dateinamen einen Zähler einbauen (also die zu öffnende) im Makro das eben immer die nächste Datei geöffnet wird. Wie kriege ich das hin ?
Antwort 1 von nighty
hi all :-)
ein beispiel
gruss nighty
ein beispiel
gruss nighty
Option Explicit
Sub DateienLesen()
On Error GoTo fehlerbehandlung
Call EventsOff
Dim DateiName As String
Dim zaehler As Integer
Dim Ansage As String
DateiName = Dir("C:\Temp\" & "*.xls")
For zaehler = 1 To 100
If ThisWorkbook.Name <> DateiName Then
Workbooks.Open Filename:="C:\Temp\" & Mid(DateiName, 1, Len(DateiName) - CStr(Len(zaehler)) & CStr(zaehler))
Rem hier waere dann dein code zur weiteren verarbeitung bzw aufruf eines makros ,wie z.b. Call MeinMakro
Workbooks(DateiName).Save
Workbooks(DateiName).Close
End If
DateiName = Dir
Next zaehler
Call EventsOn
End
fehlerbehandlung:
If Err = 5 Then
Ansage = MsgBox("Die Datei " & "*" & CStr(zaehler) & ".xls ist nicht vorhanden,weiter ?", vbYesNo)
If Ansage = vbYes Then
Resume Next
Else
Call EventsOn
End
End If
Else
Err.Raise 5
End If
End Sub
Public Sub EventsOff()
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
End Sub
Public Sub EventsOn()
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End SubAntwort 2 von nighty
hi all
noch kleiner fehler drin mom
gruss nighty
noch kleiner fehler drin mom
gruss nighty
Antwort 3 von rolandaa
hallo karma,
versuch folgendes:
Sub Makro1()
Dim i As Integer
i = 1
Do
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\test\Eigene Dateien\Mappe" & i & ".xls"
'Anwendung
i = i + 1
Loop Until i = 101
End Sub
gruß
rolandaa
versuch folgendes:
Sub Makro1()
Dim i As Integer
i = 1
Do
Workbooks.Open Filename:= _
"C:\Dokumente und Einstellungen\test\Eigene Dateien\Mappe" & i & ".xls"
'Anwendung
i = i + 1
Loop Until i = 101
End Sub
gruß
rolandaa
Antwort 4 von nighty
hi rolandaa :-)
das waere gemein wenn sie mappe* heissen wuerden grrrr
gruss nighty
das waere gemein wenn sie mappe* heissen wuerden grrrr
gruss nighty
Antwort 5 von nighty
hi rolandaa :-)
ich wart erstmal ab jetzt
bin ja von unterschiedlichen dateinamen ausgegangen
hinzu kommt das excel 7 die filesearchmethode nicht mehr unterstuetzt,haette aber jetzt eine neue idee falls es so sein sollte,na mal schauen :-))
gruss nighty
ich wart erstmal ab jetzt
bin ja von unterschiedlichen dateinamen ausgegangen
hinzu kommt das excel 7 die filesearchmethode nicht mehr unterstuetzt,haette aber jetzt eine neue idee falls es so sein sollte,na mal schauen :-))
gruss nighty

