#Serienbrief mit #VBA #formatieren

Ihr #Serienbrief soll abhängig von #Feldinhalten #formatiert werden? Dann müssen Sie die Einzeldokumente wie vorgestern gezeigt mit #VBA generieren und beispielsweise als #PDF speichern.

Und wenn Sie weitere #Textmarken gesetzt haben, dann können Sie in dieser Schleife Zeilen einfügen, mit denen Sie z.B. ganze formatierte Absätze (die Textmarke paragraph_Reise) einfach durchstreichen, wenn ein Feld eine bestimmte Bedingung erfüllt (hier: wenn die Textmarke DelJN 0 ist):

ThisDocument.Bookmarks("paragraph_Reise").Range.Font.StrikeThrough = (ThisDocument.Bookmarks("DelJN").Range = 0)
Veröffentlicht unter VBA, Word | Verschlagwortet mit , , , , , | Hinterlasse einen Kommentar

#Serienbrief dynamisch #formatieren

Ihr #Word #Serienbrief soll je nach #Input unterschiedliche #Formatierungen haben? Lösungsvariante 1 (für Unkompliziertes, wie zum Beispiel: je nach Eingabe soll ein Wort durchgestrichen sein stehen):

Sie können mit SENDUNGEN > Schreib- und Einfügefelder > Regeln > Wenn … Dann … Sonst arbeiten, und zwar so:

Sie erzeugen das Einfügefeld mit der WENN-Bedingung, unter der Sie die beiden Varianten anzeigen wollen, und dem gleichen Inhalt für dann diesen Text einfügen und für sonst diesen Text einfügen. WTipp Seriendruck Bedingungsfeld

Damit Sie die unterschiedliche Formatierung hinkriegen, klicken Sie nun mit der rechten Maustaste auf das Feld. Wählen Sie im Kontextmenü Feldfunktionen ein/aus.

wtipp-seriendruck-feldfunktionen.png

Damit sehen Sie nun, wie sich Word den Befehl erteilt. Und hier können Sie eingreifen: Formatieren Sie die dann-Antwort so um, wie Sie es in Ihrem Spezialfall brauchen.WTipp Seriendruck Feld

Noch ein Rechtsklick, wieder Feldfunktionen ein/aus, fertig!

 

 

Veröffentlicht unter Word | Verschlagwortet mit , , , , , , , | Hinterlasse einen Kommentar

#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 | Hinterlasse einen Kommentar

#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 , , , , | Hinterlasse einen Kommentar

#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 , , , , , , , , , , | Hinterlasse einen Kommentar

#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 , , , | Hinterlasse einen Kommentar

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 , , , | 1 Kommentar

#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

#Access #Abfragen #auslesen #Klartext

Sie hätten gerne alle Abfragen in Ihrer #Access #Datenbank im #Klartext? (Zum Beispiel, weil Sie herausfinden müssen, wo überall Sie ein bestimmtes Feld verwendet haben?). Die können Sie sich mit VBA auflisten lassen (oder in eine Tabelle schreiben, …), und zwar mit diesem Schnipsel:

Dim myQD As QueryDef
For Each myQD In CurrentDb.QueryDefs
     If Left(myQD.Name, 1) <> "~"  Then
         Debug.Print
         Debug.Print myQD.Name
         Debug.Print myQD.SQL
         End If
     Next myQD
Set myQD = Nothing
Veröffentlicht unter Access, VBA | Hinterlasse einen Kommentar