Дополнительные пробелы при создании поля с помощью VBA: {EQ ...} вместо {EQ ...} - PullRequest
1 голос
/ 03 апреля 2011

Я использую VBA для создания перекрывающегося символа в Word:

a = "x"
b = "."
Selection.Fields.Add Range:=Selection.Range, Text:= _
        "EQ \o (" & a & "," & b & ")", PreserveFormatting:=False

Вывод

{ EQ \o (x,.) }

, который выдает: http://img843.imageshack.us/img843/3783/18492133.png. Как видно изсерая коробка, характер широкий.Ширина может быть уменьшена до http://img838.imageshack.us/img838/1723/69344761.png путем изменения поля вручную на

{ EQ \o (x,.)}    or   {EQ \o (x,.)}

Но как этого можно достичь непосредственно в VBA?

Ответы [ 2 ]

0 голосов
/ 06 июня 2015

Этот код присваивает правильное значение полю EQ

 ActiveDocument.Fields.Item(numderfield).Code.Text = "EQ \o (" & a & "," & b & ")"
0 голосов
/ 03 апреля 2011

Я предполагаю, что вам нужно удалить заключительный пробел между последним парантезом и фигурной скобкой.

Dim x As String

Dim y As String

x = "{EQ \ o (x ,.)} "

y = Replace (x,"} ","} ") 'Обратите внимание на место для выражения поиска, например,'} '' Может также поставить")}"replace with")} "

y становится выводом, который, я думаю, вы желаете

Вы можете просто использовать функцию замены, показанную выше, для выполнения этой задачи.

Ваш код будетстать

a = "x"
b = "."
Selection.Fields.Add Range:=Selection.Range, Text:= _
"EQ \o (" & a & "," & b & ")", PreserveFormatting:=False
Selection.Range.Text = Replace(Selection.Range.Text, ") }", ")}")
...