Probleme beim Speichern im Format PDF (mit VBA)

09/03/2010 - 13:14 von Maria Fähndrich | Report spam
Hallo Word-VBA-Spezialisten,

zur Archivierung sollen Word-Dateien nur im Format PDF gespeichert
werden. Dafür ist auf dem Server M:\ der Ordner "Archiv" mit
Unterordnern z. B. "Kunde" usw. vorbereitet. Als Dateiname soll der
Typ (z. B. Brief, Aktenvermerk usw.) verwendet werden, der bei einer
Textmarke hinterlegt ist, zusàtzlich das aktuelle Datum und der
Betreff, z. B. Aktenvermerk 2010-03-09 Wasserschaden.pdf. Der Pfad und
der ganze Dateiname sind bereits in einer TextBox der UserForm
enthalten: usf_4_pdf.TxtB_GanzName.Value. Das Datum wird so
festgelegt: Year(Date) & "-" & Month(Date) & "-" & Day(Date)

Nun treten drei Problem auf:
1. Es ist erforderlich, dass vor dem Speichern im Format *.pdf zuerst
im Format *.docm (Datei enthàlt Makros!) gespeichert wird. Als
Notlösung wurde ein "Loeschordner" in M:\Archiv erstellt, in dem alle
nicht benötigten Dateien abgespeichert und immer wieder überschrieben
werden (Dateiname "Zum Loeschen.docm").
2. Das Datum erscheint nur in der Form 2010-3-9.
3. Beim Ausführen des Makros "Speichern im Format PDF" kommt manchmal
– aber nicht immer – die Meldung "Laufzeitfehler '-2147 467259
(80004005) Diese Datei wird gerade von einer anderen Anwendung oder
einem anderen Benutzer verwendet". Wenn dann im Visual Basic Editor
durch Klick auf das Symbol eines grünen Dreiecks "Fortsetzen" geklickt
wird, làuft das Speichern doch plangemàß ab.

Nun meine Fragen:
1. Kann das Speichern im Format *.docm ausgelassen werden?
2. Wie erscheint das Datum richtig als 2009-03-09, also mit führender
Null bei Zahlen < 10?
3. Warum erscheint manchmal aber nicht immer die Meldung der
anderweitigen Benutzung und wie kann diese Frage ausgeschaltet werden?
4. Kann außerdem die Word-Datei geschlossen werden, sobald die PDF-
Datei geöffnet wurde?

Hier meine Programmierung
In der UserForm " usf_4_pdf " ist bereits der Pfad und Dateiname in
einer TextBox enthalten: TxtB_GanzName. Er setzt sich zusammen aus
StrPfad (=M:\Archiv), aus dem Ordner z. B. Kunde und aus dem
Dateinamen StrDateiName.
Wenn auf die Schalflàchte OK geklickt wird, làuft folgendes Makro ab:

Private Sub CmdB_OK_Click()
'
Dim StrDateiName As String
Dim StrTag As String
Dim StrPfad As String
'
StrDateiName = usf_4_pdf.TxtB_GanzName.Value
StrTag = Year(Date) & "-" & Month(Date) & "-" & Day(Date)
'
'Speicherort auswàhlen
'
StrPfad = "M:\Archiv\"
ChangeFileOpenDirectory ("M:\")
'
'Vorab als Word-Datei speichern
'
ActiveDocument.SaveAs FileName:="M:\Archiv\Loeschordner
\ZumLoeschen.docm", _
FileFormat:=wdFormatXMLDocumentMacroEnabled,
LockComments:=False, _
Password:="", AddToRecentFiles:=True, WritePassword:="", _
ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False,
SaveAsAOCELetter:= _
False
'
' Als PDF speichern
'
ActiveDocument.ExportAsFixedFormat _
OutputFileName:=StrDateiName, _
ExportFormat:=wdExportFormatPDF, _
OpenAfterExport:=True, _
BitmapMissingFonts:=True, _
UseISO19005_1:=True
'
Unload usf_4_pdf
'
End Sub

Vielen Dank im Voraus und herzliche Grüße

Maria
 

Lesen sie die antworten

#1 Thomas Gahler
10/03/2010 - 10:35 | Warnen spam
Hallo Maria


2. Wie erscheint das Datum richtig als 2009-03-09, also mit führender
Null bei Zahlen < 10?


Du musst zusàtzlich die Format$()-Funktion verwenden

StrTag = format$(Year(Date),"0000") & "-" & _
Format$(Month(Date),"00") & "-" & _
Format$(Day(Date),"00")


Doch noch einfacher wàre

StrTag = Format(Now, "yyyy-mm-dd")
- oder -

StrTag = Format(Date, "yyyy-mm-dd")


Für die anderen Fragen muss ich mal an einem Abend reinschauen, wird wohl
Wochenende werden



Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows XP (SP3), Office XP (SP3)

Ähnliche fragen