Maria Fähndrich
2010-03-09 12:14:24 UTC
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
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