auf geöffnete Email antworten vba
#1
Hallo zusammen,

ich habe ein kleines Probelm, ich möchte aus Excel heraus auf eine geöffnete Mail antworten.

Das klappt mit folgendem Code auch ganz gut, nur möchte ich das die Antwort an die geöffnete Mail angehängt wird. In meinem Fall wird ein
neues Fenster geöffnet.

Code:
Private Sub Angebot_Click()

Dim Outlook As Object
Dim Mail As Object
Dim Att As Object
Dim strDateiname As String
Dim strPath As String
Dim strPath2 As String
Dim strPDF As String
Dim strFile As String
Dim Quelle$, Ziel$, FSO As Object
Dim olApp As Object ', AktMail As Object,
Dim myAnswer As Object

Set olApp = CreateObject("Outlook.Application")
If Not olApp.ActiveInspector Is Nothing Then                'Pruefung auf offene Mail
   
With olApp.ActiveInspector.CurrentItem()
  Set myAnswer = .Reply                            'allen Antworten-Verweis
  .Close False                                       'Aktuelle Mail schliessen
End With
       
With myAnswer
.Body = "Das ist nur ein Test"
.Display
End With
       
    Set myAnswer = Nothing
    Set olApp = Nothing
   
End If

Range("A1").Select

End Sub


Angehängte Dateien
.xlsm   Angebot.xlsm (Größe: 19,48 KB / Downloads: 2)
Antworten Top
#2
ich habe hier auf Getobject umgestellt, weil outlook ja schon offen sein muß wenn du ein aktives Mailfenster auswählen möchtest.

um die Originalmail  in die Antwort zu bekommen mußt du den body im reply anhängen. Das close ist hier eher hinderlich.

Code:
Set olApp = GetObject(Class:="Outlook.Application")
If olApp Is Nothing Then Exit Sub

If Not olApp.ActiveInspector Is Nothing Then                'Pruefung auf offene Mail
  
With olApp.ActiveInspector.CurrentItem()
  Set myAnswer = .Reply                            'allen Antworten-Verweis
 
  '.Close False                                       'Aktuelle Mail schliessen


myAnswer.htmlbody = "Das ist nur ein Test" & vbCrLf & .htmlbody
myAnswer.Display

End With
    Set myAnswer = Nothing
    Set olApp = Nothing
   
End If
Antworten Top
#3
Vielen Dank Ralf,

das klappt wirklich gut.


Code:
.htmlbody = "Das ist nur ein Test" & vbCrLf & .htmlbody

Anstatt nur einen Text versuche ich gerade ein Objekt aus Datei als Antwort einzufügen.

Manuell über Outlook "einfügen" "Objekt" "aus Datei" klappt es auch, ich weiß allerdings nicht wie ich es
als VBA ansprechen muß.

Das Verzeichnis ist H:\
Die Datei heißt "Angebot.docx"

der untenstehende Code bringt leider keinen Erfolg.

Hast du eine Idee?

Code:
.htmlbody = "<img src=""H:\Angebot.docx"">" & vbCrLf & .htmlbody
Antworten Top
#4
versuchs mal mit Chatgpt und dessen Kollegen in den diversen Browsern. Das hab ich für die vorherige Antwort auch gemacht.
Sonst mach ich eigentlich kaum was mit VBA im Outlook. Somit kann ich hier auch nur ausprobieren. 

Grundsätzlich würde ich meinen du möchtest das Angebot als Anhang mitsenden dann geht das bekanntlich über die .attachement.add  Funktionalität
Antworten Top
#5
Hallo Frank,

kleine Anmerkung zu:

.htmlbody = "<img src=""H:\Angebot.docx"">

Die Syntax soll ja ein Image anzeigen.

Das geht nicht, weil
 - .docx kein Bild ist,  - spätestens nach Versand kein Zugriff mehr auf die Datei bestehen würde und ein Platzhalter-Bild angezeigt würde.
   Du müsstest einen Internet- oder Netzwerkpfad dort angeben.
 - hier meistens eine cid: also ein Zeiger auf eine im Hintergrund mitgeschickte Bilddatei in der Mail angegeben wird.

Gruß
Karl-Heinz
Antworten Top
#6
Hallo Karl-Heinz,

Ja ich weiß, mit Bildern klappt das ganz perfekt.

Aber hast du eine Idee mit welcher Sytax ich den Inhalt einer Word-Datei in die geöffnete Email einfügen kann?
Antworten Top
#7
Nein, leider nicht.

Da (mit Word) habe ich mich noch nicht mit beschäftigt.

Ggf. über "Kopieren und Einfügen" oder "Kopieren und als Bild einfügen", so wie man es in Excel auch machen kann.

Gruß
Karl-Heinz
Antworten Top
#8
wie bereits geschrieben, frag mal so eine Ki. Hier der Auswurf von meiner Opera Aria. 
Hoffe das passt, da ungetestet.

Code:
Sub ReplyWithWordHtmlContent()
    Dim olApp As Outlook.Application
    Dim olMail As Outlook.MailItem
    Dim olReply As Outlook.MailItem
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim strFilePath As String
    Dim strContent As String
   
    ' Pfad zur Word-Datei (bitte anpassen)
    strFilePath = "C:\Pfad\zur\deiner\Datei.docx"
   
    ' Outlook-Anwendung und die aktuell ausgewählte E-Mail abrufen
    Set olApp = Outlook.Application
    Set olMail = olApp.ActiveExplorer.Selection(1)

    ' Word-Anwendung und Dokument öffnen
    Set wdApp = New Word.Application
    Set wdDoc = wdApp.Documents.Open(strFilePath)
   
    ' Den Inhalt des Word-Dokuments als HTML speichern
    strContent = wdDoc.Content.HTMLText
   
    ' Word-Dokument schließen
    wdDoc.Close False
    wdApp.Quit False
   
    ' Antwort auf die E-Mail erstellen
    Set olReply = olMail.Reply
   
    ' Inhalt direkt in die E-Mail einfügen
    olReply.HTMLBody = olReply.HTMLBody & "<br><br>Inhalt aus der Word-Datei:<br>" & strContent
   
    ' E-Mail anzeigen
    olReply.Display
    ' olReply.Send ' Kommentar entfernen, um die Antwort zu senden

    ' Aufräumen
    Set olReply = Nothing
    Set olMail = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing
End Sub
Antworten Top
#9
Hi Ralf,

das sieht mir wie ein Pendant zu Range2HTML in Excel aus, Datei als HTML speichern und dann den Inhalt anfügen.

Gruß
Karl-Heinz
Antworten Top
#10
Hallo Ralf,
Vielen Dank, bin gerade auf Arbeit - werde ich morgen früh testen.

Gruß Frank
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste