Home-›Foren-›Outlook-›Outlook VBA-›Outlook Kontakt Notizfeld Format
Verschlagwortet: Outlook Format VBA
- This topic has 23 Antworten, 2 Stimmen, and was last updated 13:48 um 24. Januar 2023 by Khun Bunsong.
- AutorBeitrag
- 21. Januar 2023 um 11:28 #1029388Khun BunsongParticipant
Hallo Ihr Profis,
Bitte um Hilfe, ich nutze folgenden Code, um die Schrift im Notizfeld der Kontakte zu formatieren, weil nach Synchronisierung mit dem Microsoft Exchange Profil oft die Formatierung dort verschwunden ist:
Sub Schrift_Kontakte_Notizen()
Dim Ctk As ContactItem, InSp As Inspector, Doc As Object
Set Ctk = ActiveExplorer.Selection(1)Debug.Print Ctk.Body
Set InSp = Ctk.GetInspector
Set Doc = InSp.WordEditor
InSp.DisplayDoc.Content.Font.Name = “Calibri”
Doc.Content.Font.Size = “14”End Sub
Alles geht perfekt, nun zu meiner Frage, ich möchte gern in diesen Code eine SUCHEN – ERSETZEN Funktion einbauen, die folgendes macht:
SUCHEN von mehr als 1 Leerzeichen mit ” {2;}”
ERSETZEN mit “^t”Habt Ihr einen Vorschlag, es zu integrieren in o.g. Code?
Habe sowas im Word Makro Aufzeichner gemacht, leider funktioniert der Code aber nicht im Outlook
Vielen Dank22. Januar 2023 um 09:45 #1029391MailhilfeKeymasterSie können die “Replace”-Methode des “Selection”-Objekts verwenden, um mehrere Leerzeichen durch Tabs zu ersetzen. Hier ist ein Beispiel, wie Sie es in Ihrem Code integrieren können:
Sub Schrift_Kontakte_Notizen()
Dim Ctk As ContactItem, InSp As Inspector, Doc As Object
Set Ctk = ActiveExplorer.Selection(1)
Debug.Print Ctk.Body
Set InSp = Ctk.GetInspector
Set Doc = InSp.WordEditor
InSp.Display
Doc.Content.Font.Name = „Calibri“
Doc.Content.Font.Size = „14“
Doc.Content.WholeStory.Select
Doc.Content.Find.Execute FindText:=” “, ReplaceWith:=”^t”, Replace:=wdReplaceAll
End SubDieser Code wählt den gesamten Inhalt des Notizfelds aus und ersetzt dann alle zwei Leerzeichen durch Tabs. Bitte beachten Sie, dass die Syntax für das Suchen und Ersetzen in Outlook anders ist als in Word. In Outlook müssen Sie die “Find”- und “Replace”-Methoden des “Selection”-Objekts verwenden.
23. Januar 2023 um 09:08 #1029398Khun BunsongParticipantMoin, moin,
besten Dank für die Hilfe und so schnell.
Leider bekomme ich einen Fehler, hier: FindText:=“ „ Fehler Anweisungsende erwartet,
nach Änderung meinerseits in FindText:=” ” ganze Zeile rot, SyntaxfehlerKönnen Sie bitte nochmals Änderungen vornehmen
vielen Dank23. Januar 2023 um 10:36 #1029399MailhilfeKeymasterEs tut mir leid, dass ich den Fehler verursacht habe. Der Fehler liegt daran, dass ich ein doppeltes Leerzeichen verwendet habe, anstatt eines einfachen Leerzeichens. Hier ist der korrigierte Code:
Sub Schrift_Kontakte_Notizen()
Dim Ctk As ContactItem, InSp As Inspector, Doc As Object
Set Ctk = ActiveExplorer.Selection(1)
Debug.Print Ctk.Body
Set InSp = Ctk.GetInspector
Set Doc = InSp.WordEditor
InSp.Display
Doc.Content.Font.Name = „Calibri“
Doc.Content.Font.Size = „14“
Doc.Content.WholeStory.Select
Doc.Content.Find.Execute FindText:=” “, ReplaceWith:=”^t”, Replace:=wdReplaceAll
End SubIn diesem Code wird nur ein einzelnes Leerzeichen verwendet, um mehrere Leerzeichen zu suchen und durch Tabs zu ersetzen. Bitte beachten Sie, dass Sie auch das Replace-Argument in der Execute-Methode angeben müssen, damit die Ersetzung durchgeführt wird.
Lassen Sie mich wissen, ob es funktioniert hat oder ob Sie weitere Probleme haben.
23. Januar 2023 um 12:35 #1029400Khun BunsongParticipantHallo und vielen Dank,
Sie müssen sich für NICHTS entschuldigen, ich bedanke mich für die Hilfe.
Leider kommt die Zeile in rot:
Doc.Content.Find.Execute FindText:=“ „, ReplaceWith:=“^t“, Replace:=wdReplaceAll
Habe „ “ und „^t“ Anführungszeichen, Fehler immer noch Syntax
Bin leider kein VBAlerVielleicht haben Sie noch eine Idee?
23. Januar 2023 um 13:18 #1029401Khun BunsongParticipantDer Debug kommt gelb hier:
Doc.Content.WholeStory.SelectAngepasst habe ich die Anführungszeichen so:
Doc.Content.Find.Execute FindText:=” “, ReplaceWith:=”^t”, Replace:=wdReplaceAllOhne die Zeile: Doc.Content.WholeStory.Select läuft das Makro Modul ohne Fehler, leider nur die Zeichen Calibri 14 werden angewendet, die mehr als 1 Leerzeichen Ersetzung durch einen Tab funktioniert nicht
23. Januar 2023 um 13:29 #1029402MailhilfeKeymasterEs tut mir leid, dass es Probleme mit der Syntax gab und dass die Ersetzung von Leerzeichen durch Tabs nicht funktioniert hat.
Ein möglicher Grund, warum die Ersetzung nicht funktioniert, ist, dass das Selection-Objekt nicht richtig ausgewählt wird. Sie sollten die Methode “WholeStory.Select” verwenden, um den gesamten Text im Dokument auszuwählen, bevor Sie die Ersetzung durchführen.
Hier ist der korrigierte Code:
Sub Schrift_Kontakte_Notizen() Dim Ctk As ContactItem, InSp As Inspector, Doc As Object Set Ctk = ActiveExplorer.Selection(1) Debug.Print Ctk.Body Set InSp = Ctk.GetInspector Set Doc = InSp.WordEditor InSp.Display Doc.Content.Font.Name = "Calibri" Doc.Content.Font.Size = 14 Doc.Content.WholeStory.Select Doc.Content.Find.Execute FindText:=" ", ReplaceWith:="^t", Replace:=wdReplaceAll End Sub
Lassen Sie mich wissen, ob es jetzt funktioniert hat.
23. Januar 2023 um 13:56 #1029403Khun BunsongParticipantDanke erstmal, aber leider sieht es so aus:
Sub Schrift_Kontakte_Notizen()
Dim Ctk As ContactItem, InSp As Inspector, Doc As Object
Set Ctk = ActiveExplorer.Selection(1)
Debug.Print Ctk.Body
Set InSp = Ctk.GetInspector
Set Doc = InSp.WordEditor
InSp.Display
Doc.Content.Font.Name = „Calibri“
Doc.Content.Font.Size = 14
Doc.Content.WholeStory.Select
Doc.Content.Find.Execute FindText:=“ „, ReplaceWith:=“^t“, Replace:=wdReplaceAll
End SubZeile FETT ist in ROT nach Kopie in das Modul
Es will nicht…23. Januar 2023 um 14:08 #1029404MailhilfeKeymasterErsetzen Sie mal bitte die doppelten Anführungszeichen (“”) in einfache Anführungszeichen (‘)
23. Januar 2023 um 14:11 #1029405Khun BunsongParticipantHier im Anhang ein Bild: Erwartet Anweisungsende hier:
FindFormat:=“ „Bild im Anhang
Anhänge:
Sie müssen eingeloggt sein, um angehängte Dateien ansehen zu können.23. Januar 2023 um 14:13 #1029407MailhilfeKeymasterDoc.Content.Find.Execute FindText:=" ", ReplaceWith:="^t", Replace:=wdReplaceAll
23. Januar 2023 um 14:24 #1029408Khun BunsongParticipantBei Ausführung kommt DEBUG Meldung und die sieht so aus:
Anhänge:
Sie müssen eingeloggt sein, um angehängte Dateien ansehen zu können.23. Januar 2023 um 14:58 #1029410MailhilfeKeymasterEs tut mir leid, dass ich Ihnen nicht früher gesagt habe, dass die Methode “WholeStory.Select” möglicherweise nicht verfügbar ist, je nach Version von Outlook, die Sie verwenden. Es gibt einige alternative Möglichkeiten, den gesamten Text im Dokument auszuwählen, bevor Sie die Ersetzung durchführen.
Eine Möglichkeit besteht darin, die Methode “Range.Select” zu verwenden. Hier ist ein Beispiel, wie es in Ihrem Code verwendet werden kann:
Sub Schrift_Kontakte_Notizen() Dim Ctk As ContactItem, InSp As Inspector, Doc As Object Set Ctk = ActiveExplorer.Selection(1) Debug.Print Ctk.Body Set InSp = Ctk.GetInspector Set Doc = InSp.WordEditor InSp.Display Doc.Content.Font.Name = "Calibri" Doc.Content.Font.Size = 14 Doc.Range.Select Doc.Content.Find.Execute FindText:=" ", ReplaceWith:="^t", Replace:=wdReplaceAll End Sub
In diesem Code wird die Methode “Range.Select” verwendet, um den gesamten Text im Dokument auszuwählen, bevor die Ersetzung durchgeführt wird.
Eine andere Möglichkeit besteht darin, den gesamten Text im Dokument direkt in eine Variable zu speichern und die Ersetzung auf dieser Variable durchzuführen. Hier ist ein Beispiel:
Sub Schrift_Kontakte_Notizen() Dim Ctk As ContactItem, InSp As Inspector, Doc As Object Set Ctk = ActiveExplorer.Selection(1) Debug.Print Ctk.Body Set InSp = Ctk.GetInspector Set Doc = InSp.WordEditor InSp.Display Doc.Content.Font.Name = "Calibri" Doc.Content.Font.Size = 14 Dim strText as String strText = Doc.Content.Text strText = Replace(strText, " ", "^t") Doc.Content.Text = strText End Sub
In diesem Code wird der gesamte Text im Dokument in die Variable strText gespeichert und dann die Ersetzung auf dieser Variable durchgeführt.
Bitte versuchen Sie beide Methoden und lassen Sie mich wissen, welche Methode für Sie am besten funktioniert hat.
23. Januar 2023 um 15:12 #1029411Khun BunsongParticipantDer Code läuft jetzt durch ohne Fehler, leider sieht das Ergebnis so aus:
17.08.2017^t^t^t^t^t^tPE^t^t^t^t^t^tH.^t^t^t^t^t^tRichter^tT^t^t^t^t^t^t^tmit^t^t^t^t^tPE^t^t^t^t^t^tH.^t^t^t^t^t^tRichter,^t^t^t^t^t^t^t^tgibt^t^t^t^tInfos^t^t^tan^t^t^t^t^t^tGF^t^t^t^t^t^tH.^t^t^t^t^t^tKöhler^t^tdann^t^t^t^tweiter
^t^t^t^t^t^t^t^tT^t^t^t^t^t^t^t22.08.2017^t^t^t^t^t^t|^t^t^t^t^t^t^t11:00
Das ganz ist doch nicht so einfach realisierbar?
Denke das was da im Shortcut geht: Suchen und Ersetzen mit Platzhalter ^t” muss im VBA anders aussehen? Danke für Ihr Wissen und die Mühe mit mir23. Januar 2023 um 15:51 #1029412Khun BunsongParticipantHier mal eine Darstellung von Ausgang bis gewünschtem Ergebnis, dass ich bisher mit SUCHEN ERSETZEN manuell mache:
Anhänge:
Sie müssen eingeloggt sein, um angehängte Dateien ansehen zu können. - AutorBeitrag
Das Thema ‘Outlook Kontakt Notizfeld Format’ ist für neue Antworten geschlossen.