shitzovran
Goto Top

vbs - Textpassage aus Dokument an Email übergeben

Hallo Ihrs,
gibt es die Möglichkeit zu sagen, dass ein Textbereich von - bis an die Email übergeben werden soll

Dim objOutlook As Outlook.Application
    
    On Error Resume Next
    Set objOutlook = GetObject(, "Outlook.Application")  
    If Err.Number <> 0 Then
        Err.Clear
        Set objOutlook = CreateObject("Outlook.Application")  
    End If
    
    If objOutlook Is Nothing Then
        MsgBox "Konnte keine Verbindung zu Outlook herstellen!", 16, "Problem"  
        Exit Sub
    End If
    
    On Error GoTo 0
    
    Dim Mail As MailItem
    Set Mail = objOutlook.CreateItem(olMailItem)
    Mail.Save
    
    Dim strFileName As String
    strFileName = Replace(Word.ActiveDocument, "doc", "pdf")  
    
    With Mail
      
        .To = ""          
        .Subject = ""  
        .HTMLBody = "Mit freundlichen Grüßen"  

    End With
    Set Anhang = Mail.Attachments
    Anhang.Add (ActiveDocument.Path & "\Bewerbung.pdf")  
    If InStr(1, ActiveDocument.Range, "Lebenslauf", vbTextCompare) > 0 Then  
    Anhang.Add (ActiveDocument.Path & "\Data\Lebenslauf.pdf")  
    End If
    If InStr(1, ActiveDocument.Range, "Zeugnisse", vbTextCompare) > 0 Then  
    Anhang.Add (ActiveDocument.Path & "\Data\Zeugnisse.pdf")  
    End If
    Mail.Display
    

wie bekomme ich jetzt den Text aus meinem Dokument in den Body (wo ich momentan noch "Mit freundlichen Grüßen stehen habe")?

kann ich irgendwie sagen Nehme den Text von "Sehr geehrter" bis "Mit freundlichen Grüßen" und schreibe den als .HTMLBody?

Content-Key: 116988

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

Printed on: April 25, 2024 at 01:04 o'clock

Mitglied: 76109
76109 May 28, 2009 at 09:01:55 (UTC)
Goto Top
Hallo ShitzOvran (Thomas Mü ...)!

Erstelle in Word Deinen Email-Text und speichere es unter EMAIL.HTM ab. Lese in einen String ein und Splitte den Body. Oder so ähnlich?

Gruß Dieter
Member: ShitzOvran
ShitzOvran May 28, 2009 at 09:17:05 (UTC)
Goto Top
hmm, das problem ist, dass mein Dokument auch automatisiert erstellt wird, und ich nicht, alles in dem Body der Email haben will.
Das Dokument ist ein anschreiben mit Adressbereich und unterschirft usw... und ich will nur den Test dazwischen , also das Anschreiben von "Sehr geehrter Herr XYZ" bis "Mit freundlichen Grüßen haben" wenn ich das dokument noch zusätzlich als ".htm" abspeichere und dann übergebe nimmt er nicht den inhalt, sondern schreibt in die Mail den Pfad.... wie kann ich denn sagen, dass er den inhalt des dokumentes nehmen soll?
Mitglied: 76109
76109 May 28, 2009 at 12:53:16 (UTC)
Goto Top
Hallo ShitzOvran,

hoffe, dass hilft Dir weiter:

Dim Line As Object, Text As String, Body As Boolean
    
'.....  

For Each Line In Word.ActiveDocument.Paragraphs
    If InStr(1, Line.Range, "sehr geehrte", vbTextCompare) > 0 Then  
        Text = Line.Range:  Body = True
    ElseIf InStr(1, Line.Range, "mit freundlichen", vbTextCompare) > 0 Then  
        Text = Text & Line.Range:  Exit For
    ElseIf Body = True Then
        Text = Text & Line.Range
    End If
Next

'....  
With Mail
   .To = ""  
   .Subject = ""  
   .HTMLBody = Text
End With
'......  

Gruß Dieter
Member: ShitzOvran
ShitzOvran May 29, 2009 at 06:48:22 (UTC)
Goto Top
Ganz großen Dank....

das ist fast das was ich haben wollte... er kopiert mir den Text rüber.

Das Optimum wäre jetzt natürlich noch, wenn er die Formatierung irgendwie beibehalten könnte, also zB Absätze, die in meinem Text sind, werden dann auch als Absätze erkannt... ist das irgendwie möglich?
Mitglied: 76109
76109 May 29, 2009 at 13:07:19 (UTC)
Goto Top
Mitglied: 76109
76109 May 29, 2009 at 15:10:06 (UTC)
Goto Top
Hallo ShitzOvran!

Also, im I-Explorer wird es mit Formaten korrekt angezeigt. Bleibt aber die Frage, ob es auch in Deinem Code mit Mail funktioniert?
Option Compare Text

Dim Fso As Object, mFile As Object, mPath As String
Dim Doc As Object, Line As Object, Body As Boolean, Text As String
    
Set Doc = ActiveDocument

For Each Line In Doc.Paragraphs
    If Line.Range Like "*sehr geehrte*" Then  
        Body = True
    ElseIf Line.Range Like "*mit freundlichen*" Then  
        Body = False
    ElseIf Body = False Then
        Line.Range = ""  
    End If
Next
    
mPath = Doc.Path & "\Mail.mht"  

Doc.SaveAs FileName:=mPath, FileFormat:=wdFormatWebArchive
'Doc.Close  

Set Fso = CreateObject("Scripting.FileSystemObject")  
Set mFile = Fso.OpenTextFile(mPath)

Text = mFile.ReadAll:  mFile.Close:  Fso.DeleteFile mPath

With Mail
   .To = ""  
   .Subject = ""  
   .HTMLBody = Text
End With

Gruß Dieter
Member: ShitzOvran
ShitzOvran Jun 02, 2009 at 09:28:13 (UTC)
Goto Top
Jupp, nach längerem basteln funktioniert es jetzt auch einwandfrei. Ich hatte noch eine tabelle in meinem Text, sodass er erst fehlergemacht hat und bei der übergabe hat er mir das Format zerhauen, aber mit ein bisschen friemeln und ausprobieren hats jetzt endlich geklappt.

hier mal den auzug für den HTMLBody
'* Ermitteln des HTMLBodys  


Dim Fso As Object, mFile As Object, mPath As String
Dim Doc As Object, Lines As Object, Bodys As Boolean, Text As String

'* Tabelle entfernen  
Dim tbl As Table, trow As Row, mpty$
mpty = ""  
For Each tbl In ActiveDocument.Tables
     For Each trow In tbl.Rows
         trow.Delete
     Next trow
Next tbl

'* Alle Buchstaben bis Makierung entfernen  
Set Doc = ActiveDocument
For Each Lines In Doc.Paragraphs
    If Lines.Range Like "Sehr*" Then  
        Bodys = True
    ElseIf Lines.Range Like "*Mit freundlichem Gruß*" Then  
        Bodys = False
    ElseIf Bodys = False Then
        Lines.Range = Delete
    End If
Next
    
mPath = ActiveDocument.Path & "\Data\TempMail.msg"  

Doc.SaveAs FileName:=mPath, FileFormat:=wdFormatFilteredHTML


Set Fso = CreateObject("Scripting.FileSystemObject")  
Set mFile = Fso.OpenTextFile(mPath)

Text = mFile.ReadAll
    
    
    With Mail
        .HTMLBody = Text
    End With
    
    
    Mail.Display
Mitglied: 76109
76109 Jun 02, 2009 at 12:05:39 (UTC)
Goto Top
Hallo ShitzOvran,

freut mich, dass es letztendlich doch noch geklappt hatface-smile

Gruß Dieter