2015-01-20 3 views
1

Это кажется очевидным и понятным, но оно не работает. Я работаю в Excel VBA. Я получаю открытое приложение Word и извлекаю текст из закладки в месте в таблице в Word. Тогда начинается проблема. Полученная строка представляет собой 5 chr (32) пробелов. Но что бы я ни пытался, я не могу избавиться от пробелов. Почему пробелы не обрезаются или не заменяются?Почему мои пробелы не обрезаны

Dim Wd As Word.Application 
Set Wd = GetObject(, "Word.Application") 
Dim doc As Word.Document 
'Dim r As Word.Range 
'Dim p As Word.Paragraph 
Dim tb As Word.Table 

Set doc = Wd.ActiveDocument 
Set tb = doc.Tables(1) 
'tb.Select 

Dim Place As String 
Place = Trim(doc.Bookmarks("County").Range.Text) 

'outputs length 5 
Debug.Print Len(Place) 

'this outputs 32 5 times so I know we have chr(32) and not something else 
Dim i As Integer 
For i = 1 To Len(Place) 
    Debug.Print Asc(Mid(Place, i, 1)) 
Next 

'try trim 
Place = Trim(Place) 
Debug.Print Len(Place) 
'still 5 spaces 

'try replace 
Dim s As String 
s = VBA.Replace(Place, Chr(32), "") 
Debug.Print Len(Place) 
'still 5 spaces 

Что происходит с моим кодом?

+0

Как насчет тестирования, что возвращается из 'doc.Bookmarks ("Каунти") .Range.Text'? – PaulFrancis

ответ

1

Вероятно юникода пространство, рассмотрим U2000 EN QUAD Whitespace:

x="W" & chrw(&h2000) & "W" 
?x 
W W 
?asc(mid(x,2,1)) 
32 <= normalized 
?ascw(mid(x,2,1)) 
8192 <= true character 

Так исследовать полукокса с ascw и заменить chrw

+1

Блестящий! Бесконечно благодарен. Не думал об этом. Оказалось, чтобы быть chrW (8194) –

Смежные вопросы