Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1852to1856
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text 1:1 Kopieren

Text 1:1 Kopieren
05.11.2021 12:56:43
Daniel
Guten Tag
Ich möchte einen Text aus einem Word Dokument 1:1 Kopieren und in Outlook wieder einfügen. In meinem Dokument habe ich Tabulatoren gesetzt. Diese werden jedoch nicht mit unterstehenden Code Kopiert und Eingefügt. Gibt es da vielleicht eine Lösung?
Wäre es auch möglich über VBA die Signatur zu bestimmen?
Besten Dank für Eure Unterstützug.
Gruss Daniel E.

Sub WordDateiBearbeiten()
'Allgemein
Dim strSuchbegriff_Anfang     As String
Dim strSuchbegriff_Ende       As String
Dim QuellDatei As Workbook
Set QuellDatei = Workbooks("Versuch003")
'Word
Dim ObjWinWord                As Object
Dim ObjDocWord                As Object
Const wdWindowStateMaximize   As Long = 1
'Word-Ranges, keine Excel-Ranges!
Dim rngA                      As Object
Dim rngE                      As Object
Dim rngFound                  As Object
'Suchbegriffe für Anfang und Ende vorgeben!
strSuchbegriff_Anfang = "Hallo da draussen!"
strSuchbegriff_Ende = "Garage Eberhard GmbH"
Set ObjWinWord = CreateObject("Word.Application")
ObjWinWord.Visible = True
ObjWinWord.WindowState = wdWindowStateMaximize
ObjWinWord.Activate
'Adresse zu Hause
'    Set ObjDocWord = ObjWinWord.Documents.Open("C:\Users\Nathi Noel Dänu\Dropbox\VBA\E-mail\Text001.docx")
'Adresse GmbH
Set ObjDocWord = ObjWinWord.Documents.Open("C:\Users\User\Dropbox\VBA\E-mail\Text001.docx")
Set rngA = ObjDocWord.Content
Set rngE = ObjDocWord.Content
Set rngFound = ObjDocWord.Content
rngA.Find.Execute FindText:=strSuchbegriff_Anfang
rngE.Find.Execute FindText:=strSuchbegriff_Ende
rngFound.SetRange rngA.End, rngE.Start
rngFound.Copy
ObjDocWord.Close
ObjWinWord.Quit
Set ObjDocWord = Nothing
Set ObjWinWord = Nothing
End Sub
Sub EmailDirektSenden()
Dim QuellDatei As Workbook
Dim OutApp As Object, Mail As Object, i
Dim Nachricht
Set QuellDatei = Workbooks("Versuch003")
'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren !!
'sonst geht es nicht
'Dataobject wird gebraucht wegen der Zwischenablage
Dim ClpObj As DataObject
Set ClpObj = New DataObject
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.Subject = "Betreffzeile Header"
'Zwischenablage wird eingefügt
ClpObj.GetFromClipboard
.Body = ClpObj.GetText(1)
.To = "info@degarage.ch"
'Hier wird die Mail angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'        .Send
End With
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text 1:1 Kopieren
07.11.2021 10:00:45
Daniel
Guten Morgen
Kann mir jemand behilflich sein. Unterstehender Code funktioniert soweit wie gewünscht. Doch werden die Tabulatoren welche ich gesetzt habe nicht berücksichtigt. Was mache ich falsch. Suche schon seit Tagen nach Lösungen. Doch leider ohne Erfolg! :-(
Wäre froh, wenn sich jemand melden würde!
Freundliche Grüsse Daniel E

Sub Test()
Dim dateiname                 As String
Dim i                         As Long
Dim ObjWinWord                As Object
Dim ObjDocWord                As Object
Const wdWindowStateMaximize   As Long = 1
Dim strTextInDoc              As String
Dim strTextGefunden           As String
Dim strSuchbegriff_Anfang     As String
Dim strSuchbegriff_Ende       As String
'Suchbegriffe für Anfang und Ende vorgeben!
strSuchbegriff_Anfang = "Hallo da draussen!"
strSuchbegriff_Ende = "Garage Eberhard GmbH"
Set ObjWinWord = CreateObject("Word.Application")
ObjWinWord.Visible = True
ObjWinWord.WindowState = wdWindowStateMaximize
ObjWinWord.Activate
Set ObjDocWord = ObjWinWord.Documents.Open("C:\Users\User\Dropbox\VBA\E-mail\Text001.docx")
strTextInDoc = ObjDocWord.Content.Text
strTextGefunden = Trim$(Split(Split(strTextInDoc, strSuchbegriff_Anfang)(1), strSuchbegriff_Ende)(0))
Set ObjDocWord = Nothing
Set ObjWinWord = Nothing
Dim objOutlook As Object
Dim objMail As Object
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
With objMail
.To = "deinname@deinedomain.de"
.Subject = "Betreff"
.Body = strTextGefunden
.Display
'   .Send        'Sendet die Email automatisch
End With
End Sub

Anzeige
AW: Text 1:1 Kopieren
11.11.2021 12:44:50
Peter
Hallo Daniel,
ich habe mal einen eigenen Weg kreiert, den Teil eines Word-Dokumentes in Outlook einzufügen und sende Dir eine Zip-Datei mit einer Word-Datei. Mit dem Dokument ist ein Makro verbunden. Dies solltest Du jedoch kopieren auf "Normal" - "NewMakros". Die Normal-Makros werden zentral für alle ".docm"-Dateien geführt. Wenn dort bei Dir schon die Makros1 - 4 vergeben sind, bitte die Makronumern - vor dem Kopieren - im Dokument auf andere Nummern ändern (auch den Call ändern!). Die Rubrik für Normal-Makros findest Du nach Aufruf von Makro1 zur Bearbeitung im Projekt-Fenster oben links. Erst danach ist das Verfahren mit allen Word-Dokumenten möglich.
Am Anfang des Dokuments so wie auf dem Muster "Meister_Eder.docm" dargestellt, die E-Mail-Adresse des Empfängers eintragen. Die Zeilen "E-Mail-Empfänger" und "Betreff" sind vom Inhalt her obligatorisch. Nach der Zeile "Betreff" kommt der Betreff für die E-Mail. Zwischen den Zeilen 1 x die Eingabetaste betätigen. Vor dem in die E-Mail einzufügenden Text ist die Zeile "E-Mail-Text" obligatorisch einzufügen; danach 1 x die Eingabetaste betätigen. Am Ende des einzufügenden Textes 2 x die Eingabetaste betätigen und den obligatorischen Text "Ende E-Mail-Text" eingeben.
Die Grußformel kannst Du in Outlook - auch mehrere - festlegen. Für neue Nachrichten kann man den Parameter "ohne" auswählen und anschließend die gewünschte Grußformel einfügen. Dafür braucht es keinen Makro in Word.
Hier die Word-Datei
https://www.herber.de/bbs/user/149079.zip
Übrigens: Dein Thread läuft heute nacht ab! Bei Rückfragen kannst Du mich gerne privat anschreiben, zumal sich hier im Excel-Forum für Word- und Outlook-Probleme kaum jemand interessiert.
Bitte mal ausprobieren; Rückmeldung wäre nett.
Mit freundlichem Gruß
Peter Kloßek
PS Habe soeben bemerkt, dass das Dokument auch die Makros 1000 und 1010 enthält. Bitte diese einfach löschen, sind irrtümlich mit hineingeraten.
Anzeige
AW: Text 1:1 Kopieren
11.11.2021 18:43:32
Peter
Hallo Daniel,
ich melde mich noch einmal. Hatte versäumt, mitzuteilen, dass mit dem Makro1 gestartet werden soll, oder ggfls. mit dem 1. Makro, den Du unter "Normal" gespeichert hast. Du kannst auch mit den "Makro-Optionen" zu diesem Makro eine Tastenkombination vorgeben, mit welcher dann gestartet werden kann. Ich habe übrigens auch mal Tabs in das Word-Dokument eingebaut; die Darstellung wird von Outlook 1.1 übernommen. Deine Makrobefehle habe ich mir auch noch angesehen. Wenn ich das richtig sehe, müsstest Du für jedes Word-Dukument, dass Du teilweise per E-Mail verschicken willst, Dein Makro anpassen. So sollte man jedoch nicht verfahren, weil sich bei einer Anpassung auch Fehler einschleichen können. Die von mir vorgestellte Lösung funktioniert für jedes Word-Dokument, o h n e Änderung des Makros. E-Mail-Empfänger, Betreff sowie Anfang und Ende der zu übertragenden Texte müssen natürlich auch bei mir eingetragen werden (woher sollten denn sonst diese Informationen kommen?). Damit das fertige E-Mail auch tatsächlich gesendet wird, wäre noch wichtig, dass Du (vorher oder nachher) das Outlook-Programm öffnest. Andernfalls könnte nach dem Klick auf "Senden" das E-Mail in der "Outbox" verbleiben. Bezüglich der Word-Dokumente empfehle ich, nur zuvor gespeicherte Dokumente für Outlook zu bearbeiten, da ja daran die genannten Ergänzungen vorgenommen werden. Nach dem E-Mail-Versand kann man dann einfach auf das Speichern der Dokumente verzichten und hat dann nach wie vor den Originalzustand.
Mit freundlichem Gruß
Peter Kloßek
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige