510 Benutzer online
01. Dezember 2024, 07:36:16

Windows Community



 Antworten / AufrufeThemen mit dem Stichwort word vba
0
Antworten
9383
Aufrufe
Die Methode "Execute" im Word-VBA "FileSearch"-Objekt funktioniert nicht mehr
Begonnen von Jean Raul
16. Oktober 2008, 12:04:05
Seit den gestrigen Word 2003-Updates funktioniert bei mir unter WinXP die Methode "Execute" im Word-VBA "FileSearch"-Objekt nicht mehr. Hat jemand Ähnliches erlebt oder kann das mal nachprüfen?

Ich meine z. B. folgenden Code (etwas abgewandelt aus den VBA-Beispielen):
[code]
With Application.FileSearch
   .FileName = "99*.*"
   .LookIn = "C:\My Documents"
   .Execute
   'Hier wird komischerweise immer 0 ausgegeben:
   MsgBox .FoundFiles.Count
   'Das funktioniert dann natürlich auch nicht:
   For I = 1 To .FoundFiles.Count
      MsgBox .FoundFiles(I)
   Next I
End With
[/code]

.FoundFiles.Count liefert bei mir seit gestern immer 0, auch wenn die gesuchte Datei ganz sicher und auf jeden Fall existiert. Bis zu den gestrigen Updates lieferte .Execute immer die korrekte Anzahl der gefundenen Dateien. Was ist los?

wordword winwordwinword ymsyms zguzgu 6941136369411363 windowwindow codecode applicationapplication searchsearch 5216434052164340 5902642859026428 6153528061535280 7509720175097201 anzeigenanzeigen aktivierenaktivieren filesfiles suchensuchen namename namennamen windows7windows7 win7win7 gehegehe verweisverweis bgqbgq 6228646062286460 d2sd2s vistavista keinekeine 20072007
14
Antworten
18714
Aufrufe
PDFCreator - wie unter WordVBA programmieren?
Begonnen von Jean Raul
03. Juli 2008, 22:35:12
Hat schon mal jemand versucht, mit dem (kostenlosen) PDFCreator
http://www.pdfforge.org/
WordVBA zu programmieren? Im Prinzip schaffe ich es ja mit dem mitgelieferten Beispielprogrammen. Ich habe aber Probleme damit, den Dateinamen zu programmieren, unter dem die pdf ausgegeben werden soll. Die PDF wird immer mit dem Pfad und Namen ausgegeben, der den Autosave-Optionen des Programms entspricht, aber nicht mit dem Namen, den ich im Programm vorgebe und haben will.

So lautet mein VBA-Skript. Es soll die aktuell in Word geöffnete Datei ohne weitere Benutzereingriffe als PDF in den Pfad <PDFPfad$> unter dem Namen <PDFName$> speichern:
[code]
Public Function PDFDruck(Optional OhneMsg As Boolean)
Dim Zwi$, PDFPfad$, PDFName$, pdfjob
PDFPfad$ = "C:\Zwi"
'Ermittelt den Namen des aktiven Dokuments:
Zwi$ = ActiveDocument.Name
If InStr(1, Zwi$, ".", vbTextCompare) > 1 Then
   PDFName$ = Mid(Zwi$, 1, InStr(1, Zwi$, ".", vbTextCompare) - 1)
Else
   PDFName$ = "Unbenannt"
End If

Set pdfjob = New PDFCreator.clsPDFCreator
With pdfjob
   If .cStart("/NoProcessingAtStartup") = False Then
      MsgBox "PDFCreator kann nicht initialisiert werden. Bitte beenden Sie die PDFCreator-Prozesse.", vbCritical + _
         vbOKOnly, "PrtPDFCreator"
      GoTo Ende
   End If
   .cOption("UseAutosave") = 1
   .cOption("UseAutosaveDirectory") = 1
   .cOption("AutosaveDirectory") = PDFPfad$
   .cOption("AutosaveFilename") = PDFName$
   .cOption("AutosaveFormat") = 0    '0 = PDF
   .cDefaultPrinter = "PDFCreator"
   .cPrinterStop = False
   .cClearCache
   ActiveDocument.PrintOut Background:=False
End With
'!!!!!!!!!!!!!!!!Wartet ab, bis fertig gedruckt ist:!!!!!!!!!!!!!!
Dim sleepTime, maxTime, c
sleepTime = 250
maxTime = 10
c = 0
Do While (pdfjob.cOutputFilename = "") And (c < (maxTime * 1000 / sleepTime))
  c = c + 1
  Sleep 200
Loop
'!!!!!!!!!!!!!!!Ende des Abwartens!!!!!!!!!!!!!!
Ende:
Zwi$ = pdfjob.cOutputFilename
pdfjob.cClose
Set pdfjob = Nothing
If Not OhneMsg Then
   If Len(Zwi$) > 0 Then
      MsgBox "Das Dokument wurde nach " & Zwi$ & " gespeichert.", vbInformation
   Else
      MsgBox "Beim Speichern als pdf ist ein Fehler aufgetreten!", vbCritical
   End If
End If
PDFDruck = Zwi$
End Function
[/code]

Auch die anderen COM-Funktionen des Programms sind mir ein Buch mit sieben Rätseln, da die Funktionen nach meiner Ansicht sehr schlecht dokumentiert sind. Weiß jemand mehr? Anbei die "Dokumentation" und die Beispieldateien: