Mal zu deinem ersten Problem
GetObject ist dazu da, dir eine bereits laufende Instanz zu liefern.
CreateObject ist dazu da, eine neue Instanz zu erstellen.
Es ist also nur logisch zuerst zu prüfen, ob bereits eine läuft, und wenn nicht, erst dann eine zu erstellen:
1 2 3 4 5 6 7 8 9 10 11 | Dim wdApp As Object
On Error Resume Next
Set wdApp = GetObject(, "Word.Application" )
On Error GoTo 0
If wdApp Is Nothing Then
Set wdApp = CreateObject( "Word.Application" )
End If
|
Zu deinem zweiten Problem
Du kannst nicht einfach davon ausgehen, dass es sich bei der Signatur um eine Textmarke handelt. In dem verlinkten Beispiel wird die Signatur vorher als Textmarke hinzugefügt, weshalb der Code da auch funktioniert. Bei einer beliebig empfangenen EMail funktioniert das allerdings nicht.
Du musst dir den Inhalt der Nachricht genau ansehen - ist schon etwas her, ich meine mich jedoch daran zu erinnern das es in der geöffneten EMail über's Menü weitere Aktionen > Zeige Nachrichtentext möglich ist. Im Fall einer HTML basierten EMail, siehst du dann deren HTML. Ab da, müsste man die Stelle im HTML zu finden, welche die Signatur darstellt. Das läuft dann nicht mit dem GetInspector.WordEditor - sondern über MailItem.HtmlBody - man könnte es allerdings trotzdem mit dem WordEditor versuchen; würde ich allerdings nicht empfehlen.
Grüße
PS: Du brauchst keine Word Instanz selber erstellen, um per Item.GetInspector.WordEditor ein MailItem zu [ver|b]earbeiten.
|