#Serienbrief mit #VBA #speichern

Sie wollen die Einzeldokumente ihres #Word #Serienbriefs als #PDF speichern, und dabei #Dateinamen vergeben, die von Seriendruckfeldern abhängen? Das geht mit #VBA.

Im Vorfeld müssen Sie die Bereiche, in denen Ihr „Input“ steht, mit der gestern gezeigten Funktion zu Textmarken machen; ihnen also einen Namen verpassen.

Dann kann es losgehen:

Sub Export_Results()
'
Dim I As Long
ThisDocument.MailMerge.DataSource.ActiveRecord = ThisDocument.MailMerge.DataSource.FirstRecord
For I = 1 To ThisDocument.MailMerge.DataSource.RecordCount
    ThisDocument.ExportAsFixedFormat OutputFileName:= _
    "C:\Users\katha\CISV\" & ThisDocument.Bookmarks("Prog").Range & "\" _
    & "Anmeldung " & ThisDocument.Bookmarks("PartName").Range & ".pdf" _
    , ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
    wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
    Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
    CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
    BitmapMissingFonts:=True, UseISO19005_1:=False
    ThisDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord
 Next I
End Sub

Die Erklärung:

Sie erzeugen mit Hilfe von I ein Dokument nach dem anderen, bis Sie alle vorhandenen (ThisDocument.MailMerge.DataSource.RecordCount) abgearbeitet haben. Dann exportieren Sie den aktuellen Datensatz (ThisDocument.ExportAsFixedFormat) als PDF (ExportFormat:=wdExportFormatPDF), und basteln dabei aus den Inhalten der Textmarken Prog und Partname (ThisDocument.Bookmarks(„PartName“).Range) den Dateinamen zusammen (OutputFileName:=). Dann kommt der nächste Datensatz dran (ThisDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord). Fertig.

Veröffentlicht unter Uncategorized | Kommentar hinterlassen

#Serienbrief mit #Textmarke

Ihr #Word #Serienbrief stößt mit der Serienbrieffunktion an seine Grenzen? Sie möchten z.B. die Ergebnisse als PDF in verschiedene Ordner speichern? Sie brauchen z.B. feldabhängige Formatierungen? Dann muss #VBA her 🙂

Aber zuerst brauchen wir Textmarken für die Bereiche in Ihrem Dokument, die

  • Formatierungen, Verzeichnisse, … steuern (also manche Ihrer Seriendruckfelder)
  • formatiert, ausgeblendet, … werden sollen

Das geht so:

Markieren Sie den Bereich, in dem sich der Inhalt befindet. Mit EINFÜGEN > Links > Textmarke öffnen Sie den Dialog. Hier vergeben Sie einen sinnvollen Textmarkennamen und klicken auf Hinzufügen, um die neue Textmarke anzulegen.

WTipp Textmarke

Damit hat der Bereich einen Namen. Wie Sie das dann weiterverarbeiten, zeige ich Ihnen morgen.

 

Veröffentlicht unter Word | Verschlagwortet mit , , , | 2 Kommentare

Doch kein #Serienbrief

Sie haben einen #Serienbrief in #Word, doch der soll gar kein Serienbrief (mehr) sein? Wie werden Sie diese lästige Verknüpfung zur #Datenquelle wieder los und #beenden den #Serienbriefmodus?

So: SENDUNGEN > Seriendruck starten > Seriendruck starten > Normales Word-Dokument.

WTipp kein Serienbrief.png

Schon fertig? Aber ja!

Veröffentlicht unter Word | Verschlagwortet mit , , , , | Kommentar hinterlassen

#Bildertausch ganz easy

Sie haben Ihr #Word-Dokument / Ihre #PowerPoint-Präsentation fertig gestaltet, und JETZT kommt jemand und möchte doch ein anderes Portraitfoto? Wieder alles neu einrichten, bis Rahmen, Position, … stimmen … puh 😦 Gibt’s da keinen bequemeren Weg?

Aber natürlich: markieren Sie das „alte“ Bild, und wählen Sie im Menü bei BILDTOOLS > Format > Anpassen > Bild ändern das neue Bild aus – das alte wird nun durch das neue ersetzt, und fast alle Einstellungen werden übernommen. Nur Anpassungen wie Helligkeit und Kontrast müssen Sie neu überdenken; das ist bei einem ganz anderen Bild ja auch gut so.

WTipp Bild ändern.png

Publisher stellt übrigens das alte Bild in den „leeren Raum“ neben dem Dokument. Die andern Programme löschen es.

Veröffentlicht unter PowerPoint, Publisher, Word | Verschlagwortet mit , , , , , , , , , , | Kommentar hinterlassen

#Excel #Blätter #einfärben

Sie wollen hübsche Unterscheidungskriterien für die #Arbeitsblätter in #Excel? Verpassen Sie ihnen #Farbe:

Klicken Sie dazu mit der rechten Maustaste auf das Blatt, Registerfarbe lässt Sie nun wählen (unter den Designfarben und natürlich allen anderen auch).

XTipp Blattfarbe

Veröffentlicht unter Excel | Verschlagwortet mit , , , | Kommentar hinterlassen

in #Excel #Zellbezug #zusammenbauen

Sie möchten Daten aus verschiedenen Blättern Ihrer #Excel Arbeitsmappe in einer Übersicht zusammenstellen – und dabei die Formeln nicht alle manuell erstellen, der Tabellenname muss doch reichen?

Benutzen Sie INDIREKT für den Blattbezug: =INDIREKT(„‚1‘!S$43„) verweist auf die Zelle S43 auf Blatt 1, und wenn Sie wie in meinem Beispiel in Zelle A9 ein Datum stehen haben und die Blätter von 1 bis 12 nummeriert sind, dann können Sie statt 1 ja auch
MONAT($A9) schreiben, und das in die Formel einbringen:

=INDIREKT(„‚“&MONAT($A9)&“‚!S$43„)

XTipp INDIREKT.png

Mit Autoausfüllen bekommen Sie dann in der nächsten Zeile einen Verweis auf Blatt 2, …

Veröffentlicht unter Excel | Verschlagwortet mit , , , | Kommentar hinterlassen

#Outlook #Anhänge von Anhängen speichern #jöeineRekursion

Da kam doch neulich  in den Kommentaren der Wunsch auf, nicht nur #Anhänge von E-Mails zu speichern, sondern #Anhänge von #Anhängen. Geht das?

Ja. Ich hab die ursprüngliche Prozedur ein bisschen erweitert:

Public Sub Anhaenge_handeln_r(myItem As Outlook.MailItem)
Dim myNameSpace As NameSpace
Dim mAtts As Attachments
Dim mAtt As Attachment
Dim inAtt As Outlook.MailItem
    Set myNameSpace = GetNamespace("MAPI")
    Set mAtts = myItem.Attachments
    While mAtts.Count > 0
        Set mAtt = mAtts(1)
        mAtt.SaveAsFile "D:\meinSpeicherort\" & mAtt.FileName
        If Right(mAtt.FileName, 4) = ".msg" Then
            Set inAtt = myNameSpace.OpenSharedItem("D:\meinSpeicherort\" & mAtt.FileName)
            Call Anhaenge_handeln_r(inAtt)
           Set inAtt = Nothing
        End If
        mAtts.Remove 1
    Wend
    Set mAtt = Nothing
    Set mAtts = Nothing
    Set myNameSpace = Nothing
End Sub

Und was geschieht da genau?

Die Anhänge werden gespeichert. Und wenn ein Anhang eine .msg-Datei ist, dann wird sie sodann geöffnet, und das Spiel beginnt von neuem. Die Prozedur ruft sich selbst auf, bis alle Anhänge abgearbeitet sind – das nennt man, wenn Sie ein Wort zum Angeben brauchen, Rekursion.

(Und wer genau schaut, sieht, dass ich – im Gegensatz zum Originalschnipsel – am Schluss die Objektvariablen ordentlich aufräume. So gehört sich das auch; ich hab nur damals keinen Wert drauf gelegt :-).)

Veröffentlicht unter Outlook, VBA | Verschlagwortet mit , , , , | 5 Kommentare