AW: Makros in mehreren Dateien ausführen
03.02.2009 08:56:48
Ulf
Guten Morgen,
anbei die von mir bisher gestaltete Masterdatei, die die eingebundenen Makros in den Exceldateinen eines anderen Ordners ausführen sollen.
Denke der Zugriff auf den anderen Ordner ist noch nicht korrekt, also nicht vorhanden. Makro dürfte bisher nur auf den Ordner zugreifen, in dem sich die Masterdatei selbstbefindet. Und der Aufruf der Call Anweisung funktioniert ebenso nicht.
Sub AnwendungMakrosVerzeichnis()
Dim Verz As Folder 'Verzeichniss-Objekt anlegen
Dim Datei As File 'Datei-Objekt anlegen
Dim wb As Workbook
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
'Das Verzeichniss-Objekt mit dem Verzeichniss
'der geöffneten Datei zuweisen:
Set Verz = fso.GetFolder(ActiveWorkbook.Path)
'Nun alle Dateien in dem Ordner durchgehen
For Each Datei In Verz.Files
'Wenn es eine Excel Datei ist
If UCase(Right(Datei.Name, 3)) = "XLS" Then
'Wenn die Datei noch nicht geoeffnet ist oeffnen
If Not WorkbookIsOpen(Datei.Name) Then
If Right(Datei.Path, 1) = "\" Then
Workbooks.Open Datei.Path
Else
Workbooks.Open Datei.Path
End If
End If
'Die Datei zuweisen und aktivieren
Set wb = Workbooks(Datei.Name)
wb.Activate
'hier nun dein Makro aufrufen
Call ZeilenLöschen
Call SpalteLöschen
Call SpaltenLöschen
Call SpaltenLöschen1
Call TabellenblattLöschen
Call TabellenblattLöschen1
'eventuell die Datei speichern und schliessen
wb.Save
wb.Close
End If
Next
End Sub
'Pruefung ob die Datei schon in Excel geoeffnet ist
Function WorkbookIsOpen( _
ByVal WorkbName As String _
) As Boolean
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name = WorkbName Then
WorkbookIsOpen = True
Exit Function
End If
Next
WorkbookIsOpen = False
End Function
Sub ZeilenLöschen()
Sheets("Close").Activate
Rows("2:18").Select
Selection.Delete Shift:=xlUp
End Sub
Sub SpalteLöschen()
Sheets("Close").Activate
Range("E1").Select
ActiveCell.EntireColumn.Delete
End Sub
Sub SpaltenLöschen()
Sheets("Close").Activate
Columns("F:P").Select
Selection.Delete Shift:=xlToLeft
End Sub
Sub SpaltenLöschen1()
Sheets("Close").Activate
Columns("G:K").Select
Selection.Delete Shift:=xlToLeft
End Sub
Sub TabellenblattLöschen()
Application.DisplayAlerts = False
Sheets(2).Delete
End Sub
Sub TabellenblattLöschen1()
Application.DisplayAlerts = False
Sheets(2).Delete
End Sub
Hoffe ich habe alle wichtigen Infos angegeben. Falls ein Pfad hinterlegt werden muss, kann einfach ein Beispielpfad integriert werden, änder den dann ab.
Vielen Dank!