Die Aufgabe nacheinander Dateien zu bearbeiten ist nichts ungewöhnliches; dafür gibts dutzend Beispiele im Internet/ in Foren zu finden.
Man könnte also leicht auf den Trichter kommen, dass du uns hier dreist ins Gesicht lügst ohne Rot zu werden...
Allgemein kann man das folgendermaßen angehen:
(andere Herangehensweisen sind möglich)
Option Explicit
Public Sub DoSomethingWithFilesInFolder()
Dim dlg As FileDialog
'der Nutzer soll ein Verzeichnis per Dialog auswählen
Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
If CBool(dlg.Show()) = False Then
'der Nutzer hat den Dialog abgebrochen
Exit Sub
End If
Dim doc As Word.Document
Dim objFSO As Object 'Scripting.FileSystemObject
Dim objFolder As Object 'Scripting.Folder
Dim objFile As Object 'Scripting.File
Dim strFilename As String
Dim strFileExtension As String
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(dlg.SelectedItems(1))
'Ausgabe des ausgewählten Verzeichnisses in den Direktbereich
Debug.Print vbNewLine; "["; objFolder.Path; "]"
For Each objFile In objFolder.Files
'der vollständige Dateiname (Verzeichnispfad + Dateiname)
strFilename = objFSO.BuildPath(objFolder.Path, objFile.Name)
'die Dateierweiterung (z.B. txt, pdf, doc, docx, docm)
strFileExtension = LCase$(objFSO.GetExtensionName(objFile.Name))
'Ausgabe des Dateinamens in den Direktbereich
Debug.Print Tab(4); "* "; objFile.Name
Select Case strFileExtension
Case "txt"
'...
Case "doc", "docx" 'Word Dokument
'Word Dokument öffnen
Set doc = Documents.Open(strFilename, ReadOnly:=True)
'... etwas mit dem geöffneten Dokument tun ...
'Word Dokument wieder schließen
Call doc.Close(SaveChanges:=False)
Case "docm" 'Word Dokument mit Makros
'...
End Select
Next
Set objFolder = Nothing
Set objFile = Nothing
Set objFSO = Nothing
End Sub
Das Makro kann man auszuführen, ohne ein Dokument geöffnet zu haben, indem man es innerhalb der Dokumentenvorlage Normal.dotm innerhalb eines Modules platziert.
Rechtsklick auf "Normal" -> Einfügen -> Modul
... dann das Makro oben in das soeben erstellte Modul einfügen.
Makro ausführen per Tastenkombination [ALT] + [F8]
oder über den Menüband-Reiter "Entwicklertools" -> Code: Makros
(der Reiter ist per Standard nicht sichtbar und muss einmalig eingeblendet werden; Anleitung dazu ist im Internet zu finden)
Grüße
|