Что это за странный персонаж и как от него избавиться? - PullRequest
0 голосов
/ 03 ноября 2010

Это отображается как в .NET, так и в VBA.Мужской знак:

&#9794

mo fo

В строках 4, 5, 6, 8, 10 и 12 вы заметите дополнительный символ.Это из знака абзаца.В строке 3 находится символ табуляции, но он отображается в виде пробелов.

Это происходит, когда я пытаюсь получить текст .TextRange.Text в PowerPoint.Выше находится Непосредственное окно в VBE, но оно также показывает элементы управления .NET, когда я пытаюсь поместить текст в элемент управления, например ListView.

Его можно реплицировать, открыв новую презентацию PowerPoint изатем в VBE работает:

Sub Replicate()
    Dim ap As Presentation: Set ap = ActivePresentation
    Dim sl As Slide: Set sl = ap.Slides(1)
    sl.Shapes.Title.TextFrame.TextRange.Text = "One bad" & vbCrLf & "MOFO"
    Debug.Print s.Shapes.Title.TextFrame.TextRange.Text
End Sub

Как я могу избавиться от этого (то есть просто ничего не показывать вместо мужского знака)?Это какая-то настройка Unicode для моих элементов управления или RegEx для строки или ...?

Ответы [ 3 ]

0 голосов
/ 03 ноября 2010

вместо vbCrLf Используйте это vbLf & vbCr

Sub Replicate()
    Dim ap As Presentation: Set ap = ActivePresentation
    Dim sl As Slide: Set sl = ap.Slides(1)
    sl.Shapes.Title.TextFrame.TextRange.Text = "One bad" & vbLf & vbCr & "Line Feed above me"
End Sub

alt text

0 голосов
/ 05 ноября 2010

Эта статья поможет Изучение объекта PowerPoint TextRange , но обратите внимание, что когда он из заполнителя заголовка, это Chr (11) вместо Chr (13). Вы можете использовать TextRange.Replace(ChrW(11), " ") для очистки.

0 голосов
/ 03 ноября 2010

Похоже, что Powerpoint не использует то же соглашение о переводе строки, которое использует VB.Возможно, вам придется заменить vbCrLf другим соглашением новой строки (создайте собственную пару байтовых массивов для вставки).

...