Outlook Kontakt Notizfeld Format

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

Verschlagwortet: 

15 Antworten anzeigen - 1 bis 15 (von insgesamt 23)
  • Autor
    Beitrag
  • #1029391
    Mailhilfe
    Keymaster

      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
      Participant

        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
        Keymaster

          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
          Participant

            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
            Participant

              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
              Keymaster

                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
                Participant

                  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
                  Keymaster

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

                    #1029405
                    Khun Bunsong
                    Participant

                      Hier im Anhang ein Bild: Erwartet Anweisungsende hier:
                      FindFormat:=“

                      Bild im Anhang

                      #1029407
                      Mailhilfe
                      Keymaster

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

                        #1029408
                        Khun Bunsong
                        Participant

                          Bei Ausführung kommt DEBUG Meldung und die sieht so aus:

                          #1029410
                          Mailhilfe
                          Keymaster

                            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
                            Participant

                              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
                              Participant

                                Hier mal eine Darstellung von Ausgang bis gewünschtem Ergebnis, dass ich bisher mit SUCHEN ERSETZEN manuell mache:

                                #1029416
                                Mailhilfe
                                Keymaster

                                  Der Grund dafür ist, dass das Replace-Argument in der Execute-Methode das gesamte Dokument durchsucht und alle Leerzeichen durch Tabs ersetzt, anstatt nur diejenigen, die direkt aufeinanderfolgen.

                                  Eine Möglichkeit, dieses Problem zu lösen, besteht darin, eine Schleife zu verwenden, um den Text Zeile für Zeile zu durchlaufen und die Leerzeichen zu ersetzen. 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
                                  Dim arrLines as Variant
                                  arrLines = Split(strText, vbCrLf)
                                  For i = 0 To UBound(arrLines)
                                  arrLines(i) = Replace(arrLines(i), " ", "^t")
                                  Next i
                                  strText = Join(arrLines, vbCrLf)
                                  Doc.Content.Text = strText
                                  End Sub
                                  

                                  In diesem Code wird der gesamte Text im Dokument in die Variable strText gespeichert, dann wird er in ein Array aufgeteilt, indem er an jedem Zeilenumbruch getrennt wird. Dann wird jede Zeile durchlaufen und alle aufeinanderfolgenden Leerzeichen durch Tabs ersetzt.

                                  Es gibt auch eine andere Möglichkeit die RegEx (Regular Expression) verwenden, um die Leerzeichen zu finden und zu ersetzen, aber es ist etwas komplexer als die Verwendung einer Schleife. Mit der RegEx-Methode können Sie spezifischere Muster suchen und ersetzen, z.B. mehrere aufeinanderfolgende Leerzeichen. 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
                                  Dim strText as String
                                  strText = Doc.Content.Text
                                  Dim objRegEx as Object
                                  Set objRegEx = CreateObject("VBScript.RegExp")
                                  objRegEx.Pattern = "\s{2,}"
                                  objRegEx.Global = True
                                  objRegEx.Replace(strText, "^t")
                                  Doc.Content.Text = strText
                                  End Sub

                                   
                                  In diesem Code wird ein RegEx-Objekt erstellt und die Eigenschaft “Pattern” wird auf ein Muster gesetzt, das mehrere aufeinanderfolgende Leerzeichen sucht. Dann wird die Eigenschaft “Global” auf “True” gesetzt, damit die Methode Replace alle Übereinstimmungen im Text ersetzt. Schließlich wird die Methode Replace aufgerufen, um alle aufeinanderfolgenden Leerzeichen durch Tabs zu ersetzen und der bearbeitete Text wird wieder in das Dokument geschrieben.

                                  Es ist wichtig zu beachten, dass die RegEx-Methode etwas komplexer ist und mehr Zeit zum Verstehen und Implementieren benötigen kann. Es hängt davon ab, welche Methode für Sie am besten geeignet ist.

                                15 Antworten anzeigen - 1 bis 15 (von insgesamt 23)

                                Das Thema ‘Outlook Kontakt Notizfeld Format’ ist für neue Antworten geschlossen.

                                Hat Ihnen der Beitrag gefallen?

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