online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon brumm_49 vom 03.08.2019, 10:01 Options

Worddateien aus verzeichnis drucken - VBA

Hallo zusammen,

ich möchte aus Excel heraus alle Worddateien drucken, die in einem bestimmten Verzeichnis liegen.

Dazu habe ich folgenden Code im I-net gefunden:
Sub AlleWordDateienDrucken()
With Application.FileSearch
.NewSearch
.Filename = "*.doc"
.LookIn = "c:\test\"
.SearchSubFolders = False
If .Execute() > 0 Then
ReDim strdateien(.FoundFiles.Count)
ReDim strZugehOrdner(.FoundFiles.Count)

'Durchläuft alle Dateien, die in dem obigen Verzeichnis vorhanden sind.
For i = 1 To .FoundFiles.Count

strdateien(i) = .FoundFiles(i)
strZugehOrdner(i) = .FoundFiles(i)
Do
strdateien(i) = Right(strdateien(i), (Len(strdateien(i)) - InStr(strdateien(i), "\")))
Loop While InStr(strdateien(i), "\") > 0

Documents.Open Filename:=strZugehOrdner(i)
Application.PrintOut
ActiveDocument.Saved = True 'verhindert, dass Speichernachfrage wegen Feldaktualisierung kommt
ActiveDocument.Close 'schließt das Dokument nach dem Drucken

Next i
End If
End With
End Sub

Leider kommt es bei mir zu dem Laufzeitfehler 424 - Object nicht gefunden.... und zwar hier
"Documents.Open Filename:=strZugehOrdner(i)"

Leider kann ich den Fehler nicht finden....kann mir einer von Euch helfen?

Mit freundlichen Grüßen
Oliver


Antwort schreiben

Antwort 1 von minibrain vom 04.08.2019, 14:48 Options

Hi Oliver,

prinzipiell sollte Dein VBA-Skript unter Word funktionieren.
Unter Excel allerdings musst Du Dein Skript noch anpassen.

Du musst Word über die Automatisierungsschnittstelle ansprechen. Im nachfolgenden korrigierten Code habe ich dies über folgende Zeilen gemacht:
Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")

Als Tipp würde ich Dir für die Zukunft die Verwendung von
Option Explicit
ganz oben in jeder VBA-Datei mitgeben. Dann erhältst Du beim Kompilieren bereits einen Hinweis darauf, welche Objekte nicht initialisiert sind. Aber hier nun der korrigierte Code:

Sub AlleWordDateienDrucken()

Dim WordApp As Object
Set WordApp = CreateObject("Word.Application")

With Application.FileSearch
.NewSearch
.Filename = "*.doc"
.LookIn = "e:\test\"
.SearchSubFolders = False
If .Execute() > 0 Then
ReDim strdateien(.FoundFiles.Count)
ReDim strZugehOrdner(.FoundFiles.Count)

'Durchläuft alle Dateien, die in dem obigen Verzeichnis vorhanden sind.
Dim i As Integer

For i = 1 To .FoundFiles.Count

strdateien(i) = .FoundFiles(i)
strZugehOrdner(i) = .FoundFiles(i)
Do
strdateien(i) = Right(strdateien(i), (Len(strdateien(i)) - InStr(strdateien(i), "\")))
Loop While InStr(strdateien(i), "\") > 0

WordApp.Documents.Open Filename:=strZugehOrdner(i)
WordApp.Application.PrintOut
WordApp.ActiveDocument.Saved = True 'verhindert, dass Speichernachfrage wegen Feldaktualisierung kommt
WordApp.ActiveDocument.Close 'schließt das Dokument nach dem Drucken

Next i
End If
End With
End Sub

Antwort 2 von brumm_49 vom 05.08.2019, 09:55 Options

Hallo minibrain,

vielen Dank für Deine Mühe...es fúnzt.

Deinen Tipp mit werde ich in Zukunft beherzigen (Option Explicit). Das erspart doch allerlei an "Kopfschmerzen", wenn man vorher schon sieht, welche Objecte noch nicht initialisiert sind.

Einen schönen Restsonntag wünsche ich Dir.

Mit freundlichen Grüßen
Oliver

Ähnliche Themen

Access: Tastenkombinationen in VBA erstellen
Robsenponte  18.01.2007 - 197 Hits - 9 Antworten

Dos Verzeichnis drucken
Harry2300  21.02.2007 - 80 Hits - 3 Antworten

Excel VBA - Wie kann ich in mehrere Bilddateien öffnen und drucken
brumm_49  08.08.2007 - 97 Hits - 3 Antworten

Ich möchte Worddateien in pdf umwandeln
heidemarie  01.05.2008 - 210 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026