MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 08.08.2018, 13:37   #1
Dozine
Neuer Benutzer
Neuer Benutzer
Standard Word 2013 - Brief als PDF speichern und Name aus Datenbank

Hallo,

ich habe ein Problem mit meiner Programmierung. An sich funktioniert der Code schon mal, jedoch rödelt der PC zu lange dabei. Kann man den Code so verändern, dass das Speichern sich etwas beschleunigt?

Außerdem möchte ich den Vornamen auch noch mit in die Bezeichnung einfügen.

Sub speich_pdf()
'
'
Dim sMerge
Dim strDateiname As String

sMerge = ActiveDocument.MailMerge. _
DataSource.DataFields("Name").Value
strDateiname = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4)

Application.Visible = False

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"S:14.......... " & Format(Date, "yyyy.mm.dd") & " " & strDateiname & sMerge & ".pdf" _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False


Application.Visible = True
End Sub


Danke Sabine
Dozine ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.08.2018, 18:19   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Sabine,

zum Beschleunigen kann ich dir nichts sagen. Vielleicht machen solche Parameter wie BitmapMissingFonts einen Unterschied - keine Ahnung. Setz sie mal probehalber auf False, wenn du sie nicht brauchst.

Um den Vornamen mit einzubinden, kannst du dir ja die Zeile mit dem Nachnamen als Vorbild nehmen und den Dateinamen entsprechend zusammensetzen.

Im nachfolgenden Beispiel wird wird der Dateiname zusammengesetzt aus Vorname_Nachname_ und dem um vier Stellen gekürzten Dateinamen.
Code:

Sub speich_pdf()
'

Dim pfad As String
Dim sMergeN As String, smergeV As String
Dim strDateiname As String

'Seriendruckfeld-Namen und Pfadangaben wieder anpassen***
sMergeN = ActiveDocument.MailMerge.DataSource.DataFields("Nachname").Value
smergeV = ActiveDocument.MailMerge.DataSource.DataFields("Vorname").Value
pfad = "C:\temp\"

strDateiname = pfad & Format(Date, "yyyy.mm.dd") & " " _
& sMergeN & "_" & smergeV & "_" & Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 4) & ".pdf"
MsgBox strDateiname

'Application.Visible = False

ActiveDocument.ExportAsFixedFormat OutputFileName:= strDateiname, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False

'Application.Visible = True
End Sub
Achtung: Ich hab die Seriendruckfeld-Namen und Pfadangaben auf meine Testumgebung umgestellt. Also erst mal wieder anpassen!

Noch ein Tipp: Wenn du so Sachen wie Visible = False notierst, solltest du eine Fehlerbehandlung anfügen, in der die Eigenschaft wieder auf true gesetzt wird. Sonst kann es dir im Falle eines Laufzeitfehlers passieren, dass die Eigenschaft auf False verbleibt, wenn dein Makro mitten drin aussteigt.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.08.2018, 11:29   #3
Dozine
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,
habs jetzt geändert und ausprobiert. Rödelt immer noch etwas. Eventuell aber schon nicht mehr ganz so lange. Muss ich Morgen an meinem Telearbeitsplatz noch mal ausprobieren.

Hier noch mal der geänderte Code. Ist da noch ein Fehler drin? Habe VBA mir selbst angeeignet und bin noch nicht so richtig gut.

Sub speich_pdf()
'
'
Dim sMerge
Dim strDateiname As String

On Error GoTo Eingabefehler

sMergeN = ActiveDocument.MailMerge. _
DataSource.DataFields("Name").Value
sMergeV = ActiveDocument.MailMerge. _
DataSource.DataFields("Vorname").Value
strDateiname = Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 5)

Application.Visible = False

ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"S:14-......" & Format(Date, "yyyy.mm.dd") & " " & strDateiname & " " & sMergeN & ", " & sMergeV & ".pdf" _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=False, UseISO19005_1:=False

Eingabefehler:
Application.Visible = True

Application.Visible = True

End Sub


Danke Sabine
Dozine ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 09.08.2018, 13:07   #4
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Sabine,

die Reihenfolge am Ende des Makros muss sein:

Code:

'...
Application.Visible = true

Exit Sub 
Eingabefehler:
Application.Visible = true
'evtl weitere Aktionen
End Sub
Das erste .Visible = true wird bei fehlerlosem Durchlauf des Makros aktiv, das zweite im Fehlerfall. Das Exit Sub ist dafür gut, dass im fehlerlosen Fall die Fehlerbehandlung übersprungen wird. Das ist nicht so wichtig, wenn eh nichts anderes passiert, als Visible wieder auf true zu setzen, aber wenn du bei "weitere Aktionen" z.B. noch mit
Code:

MsgBox Err.Number & ": " & Err.Description
eine Beschreibung des Fehlers anbringen würdest, würde diese Messagebox ohne vorangehendes Exit Sub in jedem Fall erscheinen, ob Fehler oder nicht.

Außerdem solltest du deine neuen Variablen oben auch deklarieren. Du hast kein sMerge mehr, dafür sMergeN und sMergeV

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.08.2018, 11:18   #5
Dozine
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo Gerhard,

danke für die Hilfestellung. Jetzt funktioniert es prima. Auch rödelt er nicht lange rum.

Wie müsste ich den Code umändern, damit er im Dialogfenster "Speichern unter" zwar schon die Einstellung PDF ausgewählt hat, ich jedoch den Speichername oder -ort noch ändern könnte?

Danke
Sabine
Dozine ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 10.08.2018, 15:12   #6
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Sabine,

wenn du das Speichern-Unter-Dialogfeld sehen willst, musst du das Makro ein wenig umkrempeln:
Code:

Sub DialogSpeichernAlsPdf()

Dim speicherDialog As FileDialog
Dim sMergeN As String, sMergeV As String
Dim strDateiname As String, strPfad As String

Set speicherDialog = Application.FileDialog(msoFileDialogSaveAs)

'Pfad und DataField-Namen anpassen**
strPfad = "C:temp"
sMergeN = ActiveDocument.MailMerge. _
DataSource.DataFields("Nachname").Value
sMergeV = ActiveDocument.MailMerge. _
DataSource.DataFields("Vorname").Value

strDateiname = Format(Date, "yyyy.mm.dd") & " " & Left(ActiveDocument.Name, Len(ActiveDocument.Name) - 5) & " " & sMergeN & ", " & sMergeV

    With speicherDialog
        .InitialFileName = strPfad & strDateiname
        .FilterIndex = 7 'PDF
         
         If .Show = True Then 'wenn Speichern-Schaltfläche geklickt
            .Execute
         End If
    End With

End Sub
Das Dokument wird dann so gespeichert wie voreingestellt oder wie manuell geändert.

Die Geschichte mit dem ScreenUpdating hab ich weggelassen. Ich halte es für unnötig, denn das Einzige, was sich da auf dem Bildschirm tut, ist ja das Erscheinen des Dialogfelds. Und das soll ja.

Ich hab den Pfad und die Seriendruckfelder wieder so verwendet, dass es zu meiner Testumgebung passt.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.