staybb
Goto Top

Word Makro - Sendbutton via Outlook kann den Pfad der Datei nicht finden

Hallo zusammen,

ich habe ein einfaches Makro für ein Word Dokument erstellt, in dem ein Sendbutton das aktuell bearbeitete Dokument an eine Email Adresse senden soll, sobald man auf den Sendbutton klickt.
Es sollt sich das Dokument dann in Outlook als eine neue Mail mit angehängtem Anhang mit dem Word Dokument öffnen.

Das vb-makro sieht wie folgt aus:
Private Sub CommandButton1_Click()
    Dim objOutlook As Object
    Dim objMail As Object
    
    
    ' Outlook starten  
    Set objOutlook = CreateObject("Outlook.Application")  
    Set objMail = objOutlook.CreateItem(0) ' Neue E-Mail erstellen  
    
    ' E-Mail-Eigenschaften festlegen  
    With objMail
        .Subject = "Betreff" ' Betreff der E-Mail  
        .To = "Person@mail.xx" ' Empfänger-E-Mail-Adresse  
        .Body = "Hier den Text der E-Mail." ' Text der E-Mail  
        .Attachments.Add ActiveDocument.FullName ' Aktuelles Dokument anhängen  
        .Display ' E-Mail anzeigen  
    End With
    
    ' Objekte freigeben  
    Set objMail = Nothing
    Set objOutlook = Nothing
End Sub

Wenn ich das Word Dokument öffne und bearbeite und anschliessend auf den Sendbutton im Dokument klicke, kommt allerdings folgende Fehlermeldung:
2024-05-13_10h06_04

Wenn ich auf Debug klicke komme ich zur folgende Zeile im Makro:
 .Attachments.Add ActiveDocument.FullName ' Aktuelles Dokument anhängen  

Wisst ihr welchen Befehl ich benötige, damit der path file Fehler nicht mehr kommt und das Dokument an das Outlook Attachement Fenster angehängt wird?

Danke im voraus und grüsse
staybb

Content-ID: 6391130933

Url: https://administrator.de/contentid/6391130933

Ausgedruckt am: 05.11.2024 um 18:11 Uhr

Peter-111
Peter-111 13.05.2024 um 11:47:56 Uhr
Goto Top
Hallo,

welches ist das aktive Dokument und wurde das auch gespeichert?
Wenn ein neues Dokument erstellt wird - ohne es zu speichern - gibt es das Dokument nur "virtuell" und hat noch keinen Pfad und dann wird es nicht gefunden.

mfg Peter
13034433319
13034433319 13.05.2024 aktualisiert um 11:56:11 Uhr
Goto Top
Dokument vorher speichern sonst hat es noch keinen Pfad.

Gruß
staybb
staybb 13.05.2024 um 13:25:31 Uhr
Goto Top
Hallo,

vielen Dank für die Antworten und Tipps bereits.

Ich nehme an, ohne das Dokument zu speichern ist es nicht möglich dass das Dokument per Attach über Outlook versendet werden kann, nachdem es bearbeitet wurde?

Das ist leider organisatorisch dann etwas suboptimal, da die Benutzer im besten Fall das Dokument nur bearbeiten sollen und dann direkt per mail ohne zwischenspeichern versenden sollen können.

Gruss
13034433319
13034433319 13.05.2024 aktualisiert um 14:17:20 Uhr
Goto Top
Zitat von @staybb:
Ich nehme an, ohne das Dokument zu speichern ist es nicht möglich dass das Dokument per Attach über Outlook versendet werden kann, nachdem es bearbeitet wurde?
Mit der o.g. Methode , Nein.
Hiermit kannst du aber auch testen, bin gerade unterwegs, damit hast du dann aber keinen Einfluss auf andere Parameter wie Subject Empfänger etc ...
https://learn.microsoft.com/de-de/office/vba/api/word.document.sendmail
Das ist leider organisatorisch dann etwas suboptimal, da die Benutzer im besten Fall das Dokument nur bearbeiten sollen und dann direkt per mail ohne zwischenspeichern versenden sollen können.
Einfach per Skript beim Klick auf den Button automatisiert im TEMP-Ordner speichern und nach dem Anhängen/Senden das Dokument schließen und das File wieder löschen, und das Thema ist erledgt.
staybb
staybb 13.05.2024 um 14:41:44 Uhr
Goto Top
Zitat von @13034433319:

Zitat von @staybb:
Ich nehme an, ohne das Dokument zu speichern ist es nicht möglich dass das Dokument per Attach über Outlook versendet werden kann, nachdem es bearbeitet wurde?
Mit der o.g. Methode , Nein.
Hiermit kannst du aber auch testen, bin gerade unterwegs, damit hast du dann aber keinen Einfluss auf andere Parameter wie Subject Empfänger etc ...
https://learn.microsoft.com/de-de/office/vba/api/word.document.sendmail

Danke, ich habe den Code einmal angepasst mit dem Beispiel wie bei dem Link beschrieben.

Ich habe das
.Attachments.Add ActiveDocument.FullName
gegen
Options.SendMailAttach = True 
ActiveDocument.SendMail
ersetzt. Und nun kann ich ohne die Datei zwischenzuspeichern das Dokument versenden. Auch die anderen Parameter für das Subject und Empfänger bleiben erhalten

Vielen Dank bereits für den Tip, ich teste es noch die Tage weiter und werde mich sonst nochmal melden, falls etwas nicht ginge.

Gruss
staybb
staybb 14.05.2024 um 10:06:31 Uhr
Goto Top
Zitat von @13034433319:

Zitat von @staybb:
Ich nehme an, ohne das Dokument zu speichern ist es nicht möglich dass das Dokument per Attach über Outlook versendet werden kann, nachdem es bearbeitet wurde?
Mit der o.g. Methode , Nein.
Hiermit kannst du aber auch testen, bin gerade unterwegs, damit hast du dann aber keinen Einfluss auf andere Parameter wie Subject Empfänger etc ...
https://learn.microsoft.com/de-de/office/vba/api/word.document.sendmail
Das ist leider organisatorisch dann etwas suboptimal, da die Benutzer im besten Fall das Dokument nur bearbeiten sollen und dann direkt per mail ohne zwischenspeichern versenden sollen können.
Einfach per Skript beim Klick auf den Button automatisiert im TEMP-Ordner speichern und nach dem Anhängen/Senden das Dokument schließen und das File wieder löschen, und das Thema ist erledgt.

Also mit dem obigen Befehl funktioniert es soweit, allerdings ist es wie du schon gesagt hast nicht möglich den Empfänger und Subject zu definieren. Das wäre schon gewünscht.

Bei der zweiten variante weisst du den welchen code man benötigt, damit beim Klick auf den Button das dokument im temp ordner gespeichert wird und nach dem senden das dokument wieder geschlossen und das file geöscht wird?

Danke im voraus und grüsse
13034433319
13034433319 14.05.2024 aktualisiert um 12:18:39 Uhr
Goto Top
Bei der zweiten variante weisst du den welchen code man benötigt, damit beim Klick auf den Button das dokument im temp ordner gespeichert wird und nach dem senden das dokument wieder geschlossen und das file geöscht wird?
Private Sub CommandButton1_Click()
    Dim objOutlook As Object
    Dim objMail As Object
    Dim strDocPath as String
    
    ' Speicherpfad im TEMP festlegen  
    strDocPath = Environ("TEMP") & "\document.docx"  
    ' Dokument speichern  
    ActiveDocument.SaveAs2 strDocPath, wdFormatDocumentDefault

    ' Outlook starten    
    Set objOutlook = CreateObject("Outlook.Application")    
    Set objMail = objOutlook.CreateItem(0) ' Neue E-Mail erstellen    
    
    ' E-Mail-Eigenschaften festlegen    
    With objMail
        .Subject = "Betreff" ' Betreff der E-Mail    
        .To = "Person@mail.xx" ' Empfänger-E-Mail-Adresse    
        .Body = "Hier den Text der E-Mail." ' Text der E-Mail    
        .Attachments.Add strDocPath   ' Aktuelles Dokument als Attachment hinzufügen  
        .Send ' E-Mail senden  
    End With

    kill strDocPath    ' Dokument löschen  

    ' Objekte freigeben    
    Set objMail = Nothing
    Set objOutlook = Nothing
End Sub
staybb
staybb 14.05.2024 um 12:09:59 Uhr
Goto Top
Active document.SaveAs2 strDocPath, wdFormatDocumentDefault

Danke für den code, hatte es gerade versucht, aber leider wird nach dem Drücken auf den Button nichts ausgelöst, es erscheint auch kein Fehlermeldung.

Nur in Zeile 9 ist glaube ich ein Abstandsfehler:
ActiveDocument.SaveAs2 strDocPath, wdFormatDocumentDefault

Das habe ich behoben, aber ich bin noch am schauen warum es nicht ausgeführt wird.
13034433319
13034433319 14.05.2024 aktualisiert um 12:19:36 Uhr
Goto Top
Jepp Rechtschreibkorrektur des Tatschphones, sorry Fehler sind korrigiert...

Das habe ich behoben, aber ich bin noch am schauen warum es nicht ausgeführt wird.
Es wird direkt ohne Nachfrage mit .send gesendet, da erscheint nix sichtbares, wenn du noch ne Meldung über das Senden willst, mach ne MsgBox am Ende rein ...