Outlook Kontakt Notizfeld Format

Home-›Foren-›Outlook-›Outlook VBA-›Outlook Kontakt Notizfeld Format

Schlagwörter: 

  • Dieses Thema hat 23 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert 13:48 um 24. Januar 2023 von Khun Bunsong.
Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 24)
  • Autor
    Beitrag
  • #1029388
    Khun Bunsong
    Teilnehmer

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

      Doc.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 Dank

      #1029391
      Mailhilfe
      Administrator

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

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

        #1029398
        Khun Bunsong
        Teilnehmer

          Moin, 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, Syntaxfehler

          Können Sie bitte nochmals Änderungen vornehmen
          vielen Dank

          #1029399
          Mailhilfe
          Administrator

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

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

            #1029400
            Khun Bunsong
            Teilnehmer

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

              Vielleicht haben Sie noch eine Idee?

              #1029401
              Khun Bunsong
              Teilnehmer

                Der Debug kommt gelb hier:
                Doc.Content.WholeStory.Select

                Angepasst habe ich die Anführungszeichen so:
                Doc.Content.Find.Execute FindText:=” “, ReplaceWith:=”^t”, Replace:=wdReplaceAll

                Ohne 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

                #1029402
                Mailhilfe
                Administrator

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

                  #1029403
                  Khun Bunsong
                  Teilnehmer

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

                    Zeile FETT ist in ROT nach Kopie in das Modul
                    Es will nicht…

                    #1029404
                    Mailhilfe
                    Administrator

                      Ersetzen Sie mal bitte die doppelten Anführungszeichen (“”)  in einfache Anführungszeichen (‘)

                      #1029405
                      Khun Bunsong
                      Teilnehmer

                        Hier 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.
                        #1029407
                        Mailhilfe
                        Administrator

                          Doc.Content.Find.Execute FindText:=" ", ReplaceWith:="^t", Replace:=wdReplaceAll

                          #1029408
                          Khun Bunsong
                          Teilnehmer

                            Bei 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.
                            #1029410
                            Mailhilfe
                            Administrator

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

                              #1029411
                              Khun Bunsong
                              Teilnehmer

                                Der 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 mir

                                #1029412
                                Khun Bunsong
                                Teilnehmer

                                  Hier 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.
                                Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 24)

                                Das Thema „Outlook Kontakt Notizfeld Format“ ist für neue Antworten geschlossen.

                                -