Makro, Feld Wenn dann in E-Mail

Moderator: ModerationP

Makro, Feld Wenn dann in E-Mail

Beitragvon Beberlin2011 » 18. Mai 2022, 14:09

Hallo liebe kompetente Forum Mitglieder,

ich habe eine Word Datei in der ich Makro eingefügt haben.
Und zwar erstelle dieses ein PDF und fügt dieses PDF in eine neue E-Mail ein.
Dieses funktionier auch prima.

Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim Signature As String
Signature = Environ("appdata") & "\Microsoft\Signatures\XX-XXXX-XXXX.htm"
Signature = CreateObject("Scripting.FileSystemObject").GetFile(Signature).OpenAsTextStream( _
1, -2).ReadAll

    If ActiveDocument.Path = "" Then
        MsgBox "Dokument muss erst gespeichert werden!", vbExclamation
        Exit Sub
    End If
   
    Set objOL = CreateObject("Outlook.Application")
    strTempPath = Environ("TEMP")
    strFileNameNoExtension = Mid(ActiveDocument.Name, 1, InStrRev(ActiveDocument.Name, ".", -1, vbTextCompare) - 1)
    strPDFPath = strTempPath & "\" & strFileNameNoExtension & ".pdf"
    ActiveDocument.SaveAs2 FileName:=strPDFPath, FileFormat:=wdFormatPDF
    Set objMail = objOL.CreateItem(0)
    With objMail
   
        .Subject = "XXXXXXXXX"
        .To = "Test"
        .htmlBody = "<p style='font-family:Berlin Type Office, Berlin Type Office, sans-serif; font-size:11pt;'>" & _
                    "Sehr geehrte XXXXXXXX," & "<br></br>" & "<br></br>" & "XXXXXXXXX" & Sendemonat & "</p>" & _
                    Signature
        .Attachments.Add strPDFPath
        .Display
    End With
    Set objOL = Nothing
End Sub


Im Dokument sind einige "Kontrollkätchten-Formularfelder". Dieses können aktiviert / angekreuzt werden.
Alle Felder haben eine individuelle Textmarkte.
Nun möchte ich gerne da je nach aktivierten Feld, eine anderer Empfänger in der Mail eingefügt wird.
Beispiel:
Wenn „Kontrollkätchten-Formularfelder XX“ = aktiviert ist, dann E-Mail Empfänger (To) = XXX@XXX.de
Wenn „Kontrollkätchten-Formularfelder YY“ = aktiviert ist, dann E-Mail Empfänger (To) = YYY@YYY.de

Ich hoffe ich konnte dies verständlich formulieren.
Vielen leben Dank.
Mark
Beberlin2011
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 61
Registriert: 05. Sep 2011, 13:41

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 18. Mai 2022, 17:27

Hallo Mark,

und womit hast du jetzt ein Problem?
Es wäre schön, wenn du für die Helfer ein entsprechendes Beispiel-Dokument hier hochladen würdest.

Wie sollen den die Zuordnungen zwischen Checkbox und Mailadresse erfolgen, denn im Quelltext sollten die ja nicht direkt stehen?

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Beberlin2011 » 20. Mai 2022, 12:58

Hallo,

vielen Dank für die schnelle Anwort.
anbei das Beispiel Dokument.

Im Dokument habe ich ein Button mit einem Makro eingefügt.
Dieses sorgt dafür, dass das Dokument als PDF in eine neue E-Mail in den Anhang gelegt wird. Zusätzlich wird der Betreff und der Body etwas gefühlt.
Im Dokument sind außerdem Kontrollkätchten-Formularfelder. EIN solches Kontrollkätchten-Formularfeld wird immer angekreuzt.
Bei jedem Kontrollkätchten-Formularfeld soll eine andere Empfänger-E-Mail Adresse in „to“ eingefügt werden. Und Am besten im Body immer ein anderer Name. (Sehr geehrte Frau/Herr XXX).
Kann man dies Umsetzten?
Viele Grüße
Mark
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Beberlin2011
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 61
Registriert: 05. Sep 2011, 13:41

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 20. Mai 2022, 14:26

Hallo Mark,

machen kann man viel, aber nochmal, wo sollen die Daten für Anschrift und Anrede hinterlegt werden?
Dafür kann man eine Datenbanktabelle verwenden, eine Excel-, XML- oder Textdatei, ein Template, Schnellbausteine und vieles mehr.
Es kommt darauf an, was in eurem Umfeld am einfachsten zu handhaben ist. Aus meiner Perspektive würde ich für so etwas natürlich immer eine gemeinsam genutzt Datenbank verwenden, weil die in einer Multiuserumgebung einfach am wenigsten Probleme bereitet, aber diese Entscheidung mußt du zunächst treffen, denn sonst fängt man mit der Programmierung immer wieder von vorne an.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Gast » 21. Mai 2022, 08:05

Achso,
Sorry,
Am liebsten wäre es mir, wenn ich das im Code des Markro hätte.
Weil es sind nur acht Möglichkeiten zum ankreuzen. Also ohne externe Datenbank. Die Namen des Empfängers ändern sich auch nicht.
Gast
 

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 21. Mai 2022, 19:37

Hallo Mark,

im Sourcecode geht gar nicht, denn dann müßte man bei jeder Änderung, z.B. einer Mailadresse, den Code abändern und neu übersetzen.

In diesem Beispiel habe ich zum Speichern der Informationen mal den Statustext einer Formular.Checkbox genommen.
Dort können die Informationen für die Mail im folgenden Format hinterlegt werden:
Code: Alles auswählen
mail22@mycompany.local~Sehr geehrte Frau Meier

Somit können Form.Checkboxen hinzugefügt und angepaßt werden, ohne das man den Code selber anpassen müsste.

Gruß Ulrich
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Beberlin2011 » 22. Mai 2022, 08:15

Hallo Ulrich,

vielen Dank erst einmal für deine Antwort.

ich habe nur noch überhaupt keine Ahnung wie ich jetzt weiter vorgehen soll.
Wie finde ich den Statustext?
Und muss ich an "meinem" Code, etwas einfügen und wenn ja was?

Entschuldige die zusätzliche Frage.

VG
Mark
Beberlin2011
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 61
Registriert: 05. Sep 2011, 13:41

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 22. Mai 2022, 09:03

Hallo Mark,

den Statustext der Formular.Checkboxen findest du über deren Eigenschaften und dann bei den Hilfetexten.
Und muss ich an "meinem" Code, etwas einfügen und wenn ja was?

Nun, deinen Code kenne ich ja nicht, aber du musst auf jeden Fall die Klasse clsMailInfo und das Modul modSendMails übernehmen. Wie du die Mailaktion starten möchtest, weiß ich natürlich nicht, aber in ThisDocument siehst du, wie beispielsweise die eigentliche Prozedur aufgerufen wird. Sollte jetzt nicht so schwer sein, das auf deine Verhältnisse anzupassen. Anstatt dem Button könntest du auch ein Makro nehmen und das dann von der Schnellstartleiste aus aufrufen.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Gast » 22. Mai 2022, 10:11

Den Marko Code habe ich im ersten Post eingefügt. Und das mit der Schnellstartleiste habe ich auch schon gemacht.
Kann ich das das irgendwie integrieren?
Gast
 

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 22. Mai 2022, 11:48

Ich weiß jetzt nicht, was genau du mit integrieren meinst, aber das Makro braucht nur die Prozedur in dem Modul aufrufen, genau wie die Button_Click_Prozedur in ThisDocument.
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Gast » 22. Mai 2022, 12:14

ok
Also muss ich die Klasse clsMailInfo und das Modul modSendMails in den Code einfügen?
Sorry, aber ich weis nicht wo genau und wie?
den u.s. Code habe ich mir auch nur zusammengesucht.
Kannst du mir bitte noch einmal dabei helfen? wäre sehr lieb.

Code: Alles auswählen
Private Sub CommandButton1_Click()
Dim Signature As String
Signature = Environ("appdata") & "\Microsoft\Signatures\XX-XXXX-XXXX.htm"
Signature = CreateObject("Scripting.FileSystemObject").GetFile(Signature).OpenAsTextStream( _
1, -2).ReadAll

    If ActiveDocument.Path = "" Then
        MsgBox "Dokument muss erst gespeichert werden!", vbExclamation
        Exit Sub
    End If
   
    Set objOL = CreateObject("Outlook.Application")
    strTempPath = Environ("TEMP")
    strFileNameNoExtension = Mid(ActiveDocument.Name, 1, InStrRev(ActiveDocument.Name, ".", -1, vbTextCompare) - 1)
    strPDFPath = strTempPath & "\" & strFileNameNoExtension & ".pdf"
    ActiveDocument.SaveAs2 FileName:=strPDFPath, FileFormat:=wdFormatPDF
    Set objMail = objOL.CreateItem(0)
    With objMail
   
        .Subject = "XXXXXXXXX"
        .To = "Test"
        .htmlBody = "<p style='font-family:Berlin Type Office, Berlin Type Office, sans-serif; font-size:11pt;'>" & _
                    "Sehr geehrte XXXXXXXX," & "<br></br>" & "<br></br>" & "XXXXXXXXX" & Sendemonat & "</p>" & _
                    Signature
        .Attachments.Add strPDFPath
        .Display
    End With
    Set objOL = Nothing
End Sub
Gast
 

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 22. Mai 2022, 14:01

Hallo Mark,

da wird nichts eingefügt! Du mußt die Klasse und das Modul in dein Dokument importieren. Das geht in der VBE mit Datei exportieren und Datei importieren. Der Code als solches ist schon vollständig. Du mußt nur schauen, wie du die Prozedur SendFormMails() aufrufst, daß ist alles.

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Gast » 23. Mai 2022, 10:11

Hallo,

vielen Dank für deine Mühe, aber ich komme nicht weiter.
Woher erhalte ich diese Klasse und das Modul?

Und noch eine andere Verständnisfrage:
Das Dokument soll von mehreren Personen genutzt werden. Und dies möglichst ohne Aufwand ringsum. Am besten müsste alles notwenige im Dokument vorhanden sein. Ist das mit deiner Methode möglich? Oder muss jeder die Klasse und das Modul importieren?
Gast
 

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon knobbi38 » 23. Mai 2022, 11:08

Hallo Mark,

das sind eigentlich Grundlagen der Makroprogrammierung mit Word und für dessen Vermittlung ist ein Forum eigentlich ungeeignet.

Nochmal zu Verständnis:
die Klasse und das Modul sind Teil der Makroprogrammierung in einem Dokument und werden mit dem Dokument weitergegeben. Deshalb auch die Dateierweiterung .dotm.
Das Modul und die Klasse kannst du im VBA Editor (VBE) mit "Datei Importieren" und "Datei exportieren" zwischen den Dokumenten/Projekten austauschen.

Wenn jeder auf das Dokument zugriff hat, kann das auch jeder nutzen, jedoch verwenden alle die gleichen Daten, denn die Daten selber sind ja im Dokument gespeichert. Ansonsten müßtest du das Dokument kopieren.

Zum Einstieg wäre vielleicht dieses Buch recht hilfreich:
Wenn du freie Software fördern möchtest:
https://www.bookzilla.de/shop/article/16117566/bernd_held_vba_programmierung_fuer_word_excel_und_access.html
oder auch:
https://www.terrashop.de/eBook/VBA-Programmierung-fuer-Word-Excel-und-Access-Bernd-Held-ISBN-3645200703/art/64520070P/
https://www.lehmanns.de/shop/mathematik-informatik/21683389-9783645200707-vba-programmierung-fuer-word-excel-und-access

Gruß Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4216
Registriert: 02. Jul 2015, 14:23

Re: Makro, Feld Wenn dann in E-Mail

Beitragvon Beberlin2011 » 23. Mai 2022, 11:21

Ich weiß Ulrich, dass ich es Grundlagen sind und das ich da sehr viele Lücken habe.
Und deshalb vielen Danke deine Hilfe.

Leider kann ich deine Zip Datei und auch die .dotm nicht herunterla
Kannst du bitte so lieb sei, und den Code vom Klassenmodul und dem Modul hier hinein kopieren?
Dann kann ich das selber anlegen.

Habe ich (siehe Anlge) den Statustext der Formular.Checkboxen an der richtigen Stelle eingefügt?

Danke für den Buch Tipp.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Beberlin2011
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 61
Registriert: 05. Sep 2011, 13:41

Nächste

Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste