Notizen in Outlook Kontakte formatieren (Größe/Fond/Farbe) VBA

Home-›Foren-›Outlook-›Outlook VBA-›Notizen in Outlook Kontakte formatieren (Größe/Fond/Farbe) VBA

8 Antworten anzeigen - 1 bis 8 (von insgesamt 8)
  • Autor
    Beitrag
  • #1030727
    Mailhilfe
    Keymaster

      Hallo!
      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 Sub

      In 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.

       

      #1030730
      Jenson
      Participant

        Danke 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

        #1030731
        Mailhilfe
        Keymaster

          Das 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:

          1. 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.
          2. 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.
          3. 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 Function

          Sub 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 Sub

           

          Beachten Sie, dass diese Methode voraussetzt, dass Microsoft Word auf dem Computer installiert ist, auf dem das Skript ausgeführt wird.

           

           

          #1030732
          Jenson
          Participant

            Fü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

            #1030733
            Mailhilfe
            Keymaster

              Ja, 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.Text

              With oOutContacts.Items.Add
              ‘ … Ihre bestehenden Zuweisungen …
              .Body = textFeldInhalt
              .Save
              End With

              ‘ … Rest Ihres Codes …
              End Sub

              Ersetzen 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.

              #1030736
              Mailhilfe
              Keymaster
                #1030752
                Jenson
                Participant

                  Hallo 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 Sub

                  B) 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 = Notizfeld

                  Sub Outlook_Kontakt_anlegen()

                  Dim oOutContacts As Object, i As Integer
                  Dim myColor As Integer
                  Dim myNote As Object

                  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″) & ” ” & 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 With

                  End With
                  MsgBox “Outlook Kontakt für Outlook-LuK ist angelegt !”
                  Else
                  MsgBox “Daten unvollständig !”
                  End If

                  End 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

                  #1030753
                  Mailhilfe
                  Keymaster

                    Um Ihr Ziel zu erreichen, einen neuen Outlook-Kontakt mit formatierten Notizen aus einer Excel-Tabelle zu erstellen, müssen wir zwei Hauptprobleme lösen:

                    1. Erstellen eines neuen Outlook-Kontakts mit Daten aus Excel.
                    2. 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 das RTFBody-Attribut gehen, was allerdings komplexer ist, da VBA keine direkte Unterstützung für die Umwandlung von Text in RTF-Format bietet.

                    Lösungsansatz:

                    1. Erstellen Sie den Kontakt mit den Basisdaten aus Excel. Das haben Sie bereits in Ihrem Code umgesetzt.
                    2. 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 = False

                    doc.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 = Nothing

                    GetRtfFromWord = rtfText
                    End Function

                    Sub 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 Sub

                    In 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.

                     

                  8 Antworten anzeigen - 1 bis 8 (von insgesamt 8)

                  Hat Ihnen der Beitrag gefallen?

                  1 Stern2 Sterne3 Sterne4 Sterne5 Sterne (Keine Bewertung vorhanden)
                  Loading...