Home-›Foren-›Outlook-›Outlook VBA-›Notizen in Outlook Kontakte formatieren (Größe/Fond/Farbe) VBA
Verschlagwortet: Outlook Kontakte Notizfeld formatieren
- This topic has 8 Antworten, 2 Stimmen, and was last updated 18:48 um 31. Januar 2024 by Mailhilfe.
- AutorBeitrag
- 26. Januar 2024 um 17:42 #1030725JensonParticipant
Hallo zusammen!
Ich möchte gerne die in Excel eingegeben Kundendaten automatisch über einen Button in Outlook-Kontakte anlegen lassen.(Funzt gut.. siehe VBA anbei)
Wobei ich Probleme habe ist, es soll im Notizfeld (Outlook-Kontakte) ein Text mit einer speziellen farblichen und größen Farmatierung eingefügt werden. (ggf. auch diverse Fonds) Optimalerweise gespickt mit Variablen die weitere Kundendaten festhalten.
Hier der Code für die Anlage des Kunden mit den Daten aus der Exceltabelle:
Sub Outlook_Kontakt_anlegen2()
Dim oOutContacts As Object, i As Integer
‘Alle Eingabefelder müssen ausgefüllt sein
If Range(“Eingabe!D5”).Value <> 0 And Range(“Eingabe!C5”).Value <> 0 And Range(“Eingabe!C6”).Value <> 0 And Range(“Eingabe!C7”).Value <> 0 And Range(“Eingabe!D7”).Value <> 0 And Range(“Eingabe!C9”).Value <> 0 Then
With CreateObject(“Outlook.Application”)
Set oOutContacts = .GetNamespace(“MAPI”).GetDefaultFolder(10)With oOutContacts.Items.Add
.FirstName = Range(“Eingabe!D5”)
.LastName = “Nachname”
.CompanyName = “GlasGO GmbH”
.HomeAddressStreet = Range(“Eingabe!C6”)
.birthday = Range(“Eingabe!C9”)
.Email1Address = Range(“Eingabe!C10”)
.MobileTelephoneNumber = Range(“Eingabe!C11”)
.HomeTelephoneNumber = Range(“Eingabe!C12”)
.BusinessTelephoneNumber = Range(“Eingabe!C13”)
.Categories = “Termin”
.Save
End With
End With
MsgBox “Outlook Kontakt ist angelegt !”
Else
MsgBox “Daten unvollständig !”
End IfEnd Sub
Anbei ein kleines Bespiel, wie ich mir die Formatierung des Notizfeldes vorstelle.
Über VBA automatisiert eingespielt…..Lieben Dank für die tollen Inspirationen und Codes!!
lg
Jenson
Anhänge:
Sie müssen eingeloggt sein, um angehängte Dateien ansehen zu können.26. Januar 2024 um 18:38 #1030727MailhilfeKeymasterHallo!
Für Ihre Anforderung, das Notizfeld in Outlook-Kontakten mit speziellen Formatierungen zu versehen, müssen wir die HTML-Formatierung verwenden, da Outlook die Notizfelder im HTML-Format unterstützt.Zunächst sollten Sie den bestehenden VBA-Code so anpassen, dass das Notizfeld (Body) des Kontakts bearbeitet wird. Sie können HTML-Formatierungen wie Farbe und Schriftgröße verwenden, um das gewünschte Erscheinungsbild zu erzielen. Hier ist ein grundlegendes Beispiel, das zeigt, wie Sie HTML-Tags verwenden können, um den Text im Notizfeld zu formatieren:
Sub Outlook_Kontakt_anlegen2()
‘ … Ihr bestehender Code …With oOutContacts.Items.Add
‘ … Ihre bestehenden Zuweisungen …‘ Hier fügen wir das formatierte Notizfeld hinzu
.Body = “<html><body>” & _
“<p style=’font-size:14px; color:blue;’>Hier steht Ihr Text.</p>” & _
“<p><b>Variablenbeispiel:</b> ” & Range(“Eingabe!D5”).Value & “</p>” & _
“</body></html>”.Save
End With‘ … Rest Ihres Codes …
End SubIn diesem Beispiel wird ein Absatz (<p>) mit blauer Schriftfarbe und einer Schriftgröße von 14px erstellt. Sie können diese HTML-Struktur an Ihre Bedürfnisse anpassen, einschließlich der Verwendung von Variablen aus Ihrer Excel-Tabelle.
Beachten Sie, dass die Verwendung von HTML in Outlook bestimmte Einschränkungen hat. Es unterstützt nicht alle HTML- und CSS-Funktionen, die in modernen Webbrowsern verfügbar sind. Daher sollten Sie die Formatierung möglichst einfach halten.
28. Januar 2024 um 16:21 #1030730JensonParticipantDanke an euch beide!
Mega Ansatz – nur wird bei mir leider im Kontakt-Notizen der
Text 1:1 mit HTML-Code angezeigt…
Muß man da etwas vorher aktivieren? ggf. in den Grundeinstellungen von Outlook?
Lieben Gruß,
Jens
28. Januar 2024 um 17:32 #1030731MailhilfeKeymasterDas Problem liegt darin, dass das Notizfeld eines Outlook-Kontakts standardmäßig nicht HTML interpretiert, sondern als reiner Text behandelt wird. Um HTML-Formatierung in Outlook-Kontakten zu nutzen, müssen wir auf das
RTFBody
-Attribut des Kontaktobjekts zugreifen.Rich Text Format (RTF) ist ein Format, das von Outlook zur Formatierung von Text in Notizen verwendet wird. Sie können den HTML-Code in RTF konvertieren, bevor Sie ihn dem Kontakt hinzufügen. Leider bietet VBA keine direkte Unterstützung für die Umwandlung von HTML in RTF. Es gibt jedoch einige Umwege, wie Sie dies erreichen können:
- Verwendung eines Drittanbieter-Tools: Es gibt einige Tools und Bibliotheken, die HTML in RTF konvertieren können. Diese Tools können als externe Komponenten in Ihr VBA-Projekt eingebunden werden.
- Manuelle Konvertierung: Sie könnten den HTML-Text manuell in RTF konvertieren und dann diesen RTF-Text im
RTFBody
-Attribut des Kontakts speichern. Diese Methode erfordert jedoch ein gutes Verständnis des RTF-Formats. - Automatisierung von Word: Eine andere Möglichkeit ist die Verwendung von Word (falls installiert) zur Konvertierung des HTML-Codes in RTF. Hierfür würden Sie Word im Hintergrund öffnen, den HTML-Text einfügen, ihn in RTF konvertieren und dann in das Kontakt-Notizfeld kopieren. Dies ist eine etwas umständliche, aber machbare Lösung.
Hier ist ein Beispiel, wie Sie die Automatisierung von Word zur Konvertierung von HTML in RTF in VBA verwenden könnten:
Function ConvertHtmlToRtf(htmlText As String) As String
Dim wordApp As Object
Dim doc As Object‘ Word-Instanz erstellen
Set wordApp = CreateObject(“Word.Application”)‘ Neues Dokument erstellen
Set doc = wordApp.Documents.Add‘ HTML-Text einfügen
doc.Range(0, 0).PasteHTML htmlText‘ In RTF konvertieren
ConvertHtmlToRtf = doc.Range(0, doc.Range.End).RTF‘ Aufräumen
doc.Close False
Set doc = Nothing
wordApp.Quit
Set wordApp = Nothing
End FunctionSub Outlook_Kontakt_anlegen2()
‘ … Ihr bestehender Code …With oOutContacts.Items.Add
‘ … Ihre bestehenden Zuweisungen …‘ Konvertieren Sie HTML in RTF und fügen Sie es hinzu
.RTFBody = ConvertHtmlToRtf(“<html><body><p style=’font-size:14px; color:blue;’>Hier steht Ihr Text.</p><p><b>Variablenbeispiel:</b> ” & Range(“Eingabe!D5”).Value & “</p></body></html>”).Save
End With‘ … Rest Ihres Codes …
End SubBeachten Sie, dass diese Methode voraussetzt, dass Microsoft Word auf dem Computer installiert ist, auf dem das Skript ausgeführt wird.
28. Januar 2024 um 23:44 #1030732JensonParticipantFürs erste würde es mir reichen, wenn über .body ein fester fertig Formatierter Text automatisch in den neuen Outlook-Kontakt unter Notizen eingefügt wird. Zur Zeit ist die Vorlage als Textfelfd gespeichert. Kann man ein Textfeld oder Schnellbaustein über VBA ansprechen?
lg
Jenson
29. Januar 2024 um 09:10 #1030733MailhilfeKeymasterJa, es ist möglich, ein Textfeld oder einen Schnellbaustein (Quick Part) in Microsoft Outlook über VBA anzusprechen und den Inhalt in das Notizfeld eines Kontakts einzufügen. Allerdings gibt es einige Unterschiede im Ansatz, je nachdem, ob Sie ein Textfeld oder einen Schnellbaustein verwenden.
Verwendung eines Textfelds:
Wenn Sie ein Textfeld in einer Excel-Datei haben, können Sie den Text daraus einfach auslesen und in das Notizfeld des Outlook-Kontakts kopieren. Hier ist ein Beispiel, wie das aussehen könnte:
Sub Outlook_Kontakt_anlegen_mit_Textfeld()
‘ … Ihr bestehender Code …Dim textFeldInhalt As String
textFeldInhalt = Sheets(“IhrBlatt”).Shapes(“IhrTextfeld”).TextFrame.Characters.TextWith oOutContacts.Items.Add
‘ … Ihre bestehenden Zuweisungen …
.Body = textFeldInhalt
.Save
End With‘ … Rest Ihres Codes …
End SubErsetzen Sie
"IhrBlatt"
mit dem Namen des Excel-Blatts und"IhrTextfeld"
mit dem Namen Ihres Textfeldes.Verwendung eines Schnellbausteins (Quick Part):
Wenn Sie in Outlook einen Schnellbaustein (Quick Part) für die Notiz haben, wird es komplizierter, da VBA keinen direkten Zugriff darauf bietet. Eine Möglichkeit wäre, den Schnellbaustein in einer E-Mail zu verwenden und dann den Inhalt dieser E-Mail in das Notizfeld des Kontakts zu kopieren. Dies ist jedoch nicht gerade effizient und kann zu Problemen führen, wenn die E-Mail-Formatierung nicht mit dem Notizfeld kompatibel ist.
Eine andere Möglichkeit besteht darin, den Text des Schnellbausteins in einer separaten Datei zu speichern (zum Beispiel in einer Textdatei) und diesen Text dann in das Notizfeld des Kontakts zu kopieren, ähnlich wie bei der Verwendung eines Textfelds in Excel.
Zusammenfassung:
Für eine einfache und zuverlässige Lösung empfehle ich, den fest formatierten Text entweder direkt im VBA-Code zu speichern oder aus einem Textfeld in einer Excel-Datei zu lesen. Die Verwendung eines Schnellbausteins in Outlook ist über VBA weniger direkt und könnte zu unnötigen Komplikationen führen.
29. Januar 2024 um 12:10 #1030736MailhilfeKeymasterWir haben daraus mal einen Artikel erstellt:
Automatisierung von Kundenkontakten in Outlook mittels Excel und VBA
31. Januar 2024 um 16:59 #1030752JensonParticipantHallo zusammen,
ich bin der Herausforderung das Notizfeld (Notizen) in Outlook Kontakte / Personen
zu formatieren näher gekommen. Hier zwei Lösungsansätze die ich leider nicht kombiniert bekomme:
A) Formatierten Text in gerade geöffnetem Kontakt einfügen/ändern
Farbe / Schriftart / Größe
(Habe den Farbcode noch nicht verstanden 1000=rot, 1=schwarz, …)Sub Notizen_Outlook_Kontakte()
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.Font.Color = 1000
‘Doc.Content.Font.FontStyle = Bold… geht nicht – Warum?
Dim strText As String
Doc.Content.Text = “Text der im gerade geöffneten Outlook Kontakte – Notzfeld ausgegeben wird.”
End SubB) SO WIE ES SEIN SOLL. DER OUTLOOK KONTAKT WIRD NEU GESCHRIBEN MIT DEN DATEN, WELCHE VORHER IN DER EXCELTABELLE ERFASST WURDEN.
Leider ohne jedliche Formatierung (Größe / Farbe / Schriftart) im .Body = NotizfeldSub Outlook_Kontakt_anlegen()
Dim oOutContacts As Object, i As Integer
Dim myColor As Integer
Dim myNote As ObjectIf Range(“Eingabe!D5”).Value <> 0 And Range(“Eingabe!C5”).Value <> 0 And Range(“Eingabe!C6”).Value <> 0 And Range(“Eingabe!C7”).Value <> 0 And Range(“Eingabe!D7”).Value <> 0 And Range(“Eingabe!C9”).Value <> 0 Then
With CreateObject(“Outlook.Application”)
Set oOutContacts = .GetNamespace(“MAPI”).GetDefaultFolder(10)With oOutContacts.Items.Add
.FirstName = Range(“Eingabe!D5″) & ” ” & Range(“Eingabe!C5”)
.LastName = “-” & Range(“Eingabe!C8”) & “-”
.CompanyName = “Go Yellow GmbH”
.HomeAddressStreet = Range(“Eingabe!C6”) & “, ” & Range(“Eingabe!C7″) & ” ” & Range(“Eingabe!D7”)If Range(“Eingabe!C9”).Value <> 0 Then
.birthday = Range(“Eingabe!C9”)
End If
.Email1Address = Range(“Eingabe!C10”)
.MobileTelephoneNumber = Range(“Eingabe!C11”)
.HomeTelephoneNumber = Range(“Eingabe!C12”)
.BusinessTelephoneNumber = Range(“Eingabe!C13”)
.Categories = “0GTermin, Gothaer”.Body = “KundenklasseABCDE (G?)” & Chr(9) & Chr(9) & “-Quelle-” & Chr(9) & Chr(9) & “Version20.0” & vbNewLine & “ToDo: …. Letzter Vorort-Termin: XXX (MA) / Termin: XXX WV: 1 – 3 – 5 Jahr(e)” & vbNewLine & _
Chr(9) & “1)” & Chr(9) & vbNewLine & “Bestand:” & Chr(9) & “GEWERBE ( )” & Chr(9) & “PRIVAT( )” & vbNewLine & Chr(9) & _
Range(“Eingabe!D5″) & ” ” & Range(“Eingabe!C5″) & ” *” & Range(“Eingabe!C9″) & ” F: B: GKV: UWG-G: UWG” & vbNewLine & _
Chr(9) & “Partner:” & vbNewLine & Chr(9) & “Komm.-Vollmacht:”.Save
End WithEnd With
MsgBox “Outlook Kontakt für Outlook-LuK ist angelegt !”
Else
MsgBox “Daten unvollständig !”
End IfEnd Sub
Ziel ist es einen neuen Outlook Kontakt mit den Informationen aus der Exceltabelle zu erzeugen
und ein bestimmter Text in dem Notizfeld wiedergegeben wird. Dieser soll jedoch unterschiedliche Farben und Schriftarten und – größen haben.Zwei Probleme mit den obigen Codes:
1. .body bzw .text kann nur komplett formatiert werden nur rot oder nur Arial-Ich mochte gerne die einzelnen Zeilen unterschiedlich formatieren….
2. Ich bekomme es nicht hin beide Codes zu verbinden. Entweder bereits geöffneten Kontakt
formatieren und z.B. die Farbe anpassen oder einen neuen Kontakt schaffen aber das Notizfeld bleibt schwarz/weiss und ist unformatiert.Bin gespannt auf eure Ideen – Lieben Dank schon mal..
Jenson
31. Januar 2024 um 18:48 #1030753MailhilfeKeymasterUm Ihr Ziel zu erreichen, einen neuen Outlook-Kontakt mit formatierten Notizen aus einer Excel-Tabelle zu erstellen, müssen wir zwei Hauptprobleme lösen:
- Erstellen eines neuen Outlook-Kontakts mit Daten aus Excel.
- Hinzufügen von formatiertem Text zum Notizfeld des Kontakts, wobei verschiedene Teile des Textes unterschiedliche Formate (Farben, Schriftarten, Größen) haben.
Leider unterstützt das
.Body
-Attribut eines Outlook-Kontakts, wie Sie festgestellt haben, keine Rich-Text- oder HTML-Formatierung. Es behandelt den Text als reinen Text ohne Formatierung. Um formatierten Text hinzuzufügen, müssen wir den Umweg über dasRTFBody
-Attribut gehen, was allerdings komplexer ist, da VBA keine direkte Unterstützung für die Umwandlung von Text in RTF-Format bietet.Lösungsansatz:
- Erstellen Sie den Kontakt mit den Basisdaten aus Excel. Das haben Sie bereits in Ihrem Code umgesetzt.
- Formatieren Sie den Text im RTF-Format. Hierbei müssen Sie den Text, den Sie in das Notizfeld einfügen möchten, in das RTF-Format konvertieren. Dies kann manuell erfolgen, indem Sie die RTF-Codierung für die verschiedenen Formatierungen, die Sie benötigen, herausfinden und den Text entsprechend formatieren. Alternativ können Sie ein Word-Dokument als Zwischenlösung verwenden, um den Text zu formatieren und dann den RTF-Code zu extrahieren.
- Manuelle Konvertierung: Sie könnten den RTF-Code für verschiedene Farben, Schriftgrößen usw. recherchieren und Ihren Text entsprechend codieren. Das ist jedoch technisch anspruchsvoll und fehleranfällig.
- Automatisierung von Word: Erstellen Sie ein Word-Dokument, fügen Sie Ihren Text ein und formatieren Sie ihn wie gewünscht. Dann extrahieren Sie den RTF-Code aus Word und fügen ihn in das
RTFBody
-Attribut des Outlook-Kontakts ein. Dies ist umständlich, aber eine praktikable Lösung.
Beispielcode für die Automatisierung von Word:
Function GetRtfFromWord(text As String) As String
Dim wordApp As Object, doc As Object, rtfText As String
Set wordApp = CreateObject(“Word.Application”)
Set doc = wordApp.Documents.Add
wordApp.Visible = Falsedoc.Content.Text = text
‘ Hier fügen Sie die Formatierung hinzu, z.B.:
‘ doc.Content.Font.Name = “Calibri”
‘ doc.Content.Font.Size = 14
‘ doc.Content.Font.ColorIndex = wdRed
‘ … Weitere Formatierungen …rtfText = doc.Content.Paragraphs(1).Range.RTFText
doc.Close False
Set doc = Nothing
wordApp.Quit
Set wordApp = NothingGetRtfFromWord = rtfText
End FunctionSub Outlook_Kontakt_anlegen_mit_RTFBody()
‘ … Ihr bestehender Code zum Erstellen des Kontakts …‘ Erstellen Sie den formatierten RTF-Text
Dim formattedRtf As String
formattedRtf = GetRtfFromWord(“Ihr formatierter Text”)With oOutContacts.Items.Add
‘ … Ihre bestehenden Zuweisungen …
.RTFBody = formattedRtf
.Save
End With‘ … Rest Ihres Codes …
End SubIn diesem Beispiel müssen Sie die Formatierung im Word-Dokument entsprechend Ihrem Bedarf anpassen. Beachten Sie, dass dieses Verfahren voraussetzt, dass Microsoft Word auf Ihrem System installiert ist.
Diese Methode ist etwas umständlich, aber sie ermöglicht es Ihnen, komplexe Formatierungen im Notizfeld eines Outlook-Kontakts vorzunehmen.
- AutorBeitrag