Можно ли добавить текстовое поле в массив? - PullRequest
0 голосов
/ 27 июня 2019

Я настроил макрос для преобразования таблиц Word в массив, но некоторые ячейки содержат пустые поля текстовой формы. Мне интересно, есть ли способ включить их в массив VBA? Другие таблицы имеют смешанную строку и поле, что может быть отдельной проблемой, я подумал, что сначала я начну с самой простой версии.

Конечная цель состоит в том, чтобы попытаться получить таблицу с кодами автозамены в одном столбце и текстом автозамены в другом, чтобы автоматически добавить в проверку / автозамену через AutoCorrect.Entries.AddRichText.

Я взглянул на описание объекта FormField , поскольку это показалось по теме, и я увидел, как можно использовать метод Add для вставки полей непосредственно в область выбора. Но это не помогает получить поле в массиве.

Я нашел перечисление для полей слова , но это также не кажется полезным для добавления поля в массив.

' ... var set up omitted

ReDim MyT(TRow - 1, TCol - 1) As Variant

' ... looping through cells of table code omitted

OCell.Select
If Selection.Fields.Count > 0 Then
    MyT(A, B) = wdFieldFormTextInput 
Else
    MyT(A, B) = Selection.Text
End If

У меня есть более поздняя функция, которая отображает массив, но для приведенного выше кода он просто переходит в значение enum 70 для wdFieldFormTextInput, что имеет смысл, но определенно не то, на что я надеялся.

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Если вам нужен только текст поля, вы можете использовать:

ActiveDocument.Range.TextRetrievalMode.IncludeFieldCodes = False

см .: https://docs.microsoft.com/en-us/office/vba/api/word.textretrievalmode

0 голосов
/ 27 июня 2019

Это создаст новый FormField, добавив его в коллекцию FormFields, а также добавит новый FormField в массив a.

Dim a(1 To 1) As FormField
Set a(1) = FormFields.Add(Range:=Selection.Range, Type:=wdFieldFormCheckBox)

Это то, что вы хотитеделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...