PDA

Показать полную графическую версию : [решено] Word - MicroSoft Forms 2.0 TextBox - как удалить все из документа?


Greyman
22-03-2021, 16:30
Всем привет. Есть документ, котором после "копипастов" накопилось куча объектов типа "MicroSoft Forms 2.0 TextBox". Как их можно быстро все удалить из документа?
В интернете находил макросы для удаления "офисных" TextBox, но там используется идентификатор "msoTextBox", который текстовые поля MS Forms не воспринимает ("офисные", которые вставляются через стандартное меню Разработчика, удаляет на ура).

Пока все что могу - в режиме конструктора "в ручную" кликать мышкой там где есть (могут быть) эти объекты и удалять. Но, во-первых, это очень долго (в документе этих объектов м. б несколько десятков, а то и сотен), а во-вторых - не факт что так я найду их все (могу и пропустить, ведь поле без рамки и на белом фоне его можно не заметить).

Может есть макрос и для удаления таких объектов? Или может можно как-то их по другому быстро найти по документу, чтоб удалить?

Прилагаю сильно сокращенный пример документа (под таблицей перечислил где есть такие текстбоксы).


Sub Del_WA()
Dim Shp As Shape
For Each Shp In ActiveDocument.Shapes
If Shp.Type = msoTextBox Then Shp.Delete
Next Shp
End Sub

a_axe
22-03-2021, 17:12
Или может можно как-то их по другому быстро найти по документу, чтоб удалить? »
Нажать alt+F9, потом еще можно ctrl+G , выбрать "поле".
Может есть макрос и для удаления таких объектов? »
Попробуйте таким кодом (только не факт, что он не удалит нужное):
Sub field_del()
Dim f As Field
For Each f In ActiveDocument.Fields
If f.Type = wdFieldOCX Then f.Delete
Next f
End Sub
Greyman, проверьте личку.

Greyman
24-03-2021, 19:52
Нажать alt+F9, потом еще можно ctrl+G , выбрать "поле". »
Что должно делаться по Alt+F9? У меня ничего не происходит.
И какое поле надо искать после Ctrl-G? Не вижу там ничего подходящего.

Попробуйте таким кодом (только не факт, что он не удалит нужное): »
А вот за макрос - спасибо! Работает!

Только он удаляет не одни только "мои текстбоксы". Но на его базе нашел в инете вариант модернизации:


'Only fields that are activex controls
If f.Type = wdFieldOCX Then
'only activex controsl that are textboxes
If TypeOf f.OLEFormat.Object Is MSForms.TextBox Then f.Delete
End If

Iska
24-03-2021, 21:51
Что должно делаться по Alt+F9? »
Отображаться поля в виде кодов, а не содержимого.

Но на его базе нашел в инете вариант модернизации: »
Да, примерно так.

Greyman
25-03-2021, 09:58
Отображаться поля в виде кодов, а не содержимого. »
Точно, ступил...:( Не смотрел при этом на страницу с этими полями.

a_axe
25-03-2021, 10:04
И какое поле надо искать после Ctrl-G? »
Если оставить просто пустое окошко - диалог найдет любое ближайшее поле. Например - если у вас поля в середине документа, включаете отображение кодов полей и переходите к ближайшему, потом - к следующему и т.д. (вместо того чтобы мотать документ и искать "глазами" ).

Greyman
29-03-2021, 15:25
Если оставить просто пустое окошко - диалог найдет любое ближайшее поле. Например - если у вас поля в середине документа, включаете отображение кодов полей и переходите к ближайшему, потом - к следующему и т.д. (вместо того чтобы мотать документ и искать "глазами" ). »
Ок .Спасибо. Может и пригодится.
Но в данном случае это мало поможет - там несколько сотен страниц с кучей перекрестных ссылок и автоматической нумерации таблиц и рисунков - устанешь кнопку нажимать...;) Да и пропустить там можно "на автомате" то что нужно.
Скрипт гораздо удобнее - правда очень сильно выручил...

P.S.
Кста, все началось из-за того, что при наличии в документе таких полей с ним не работает совместный доступ (по крайней мере на 2010 "шарике"). Пришлось повозиться пока я это обнаружил (удалял куски документа - так и нашел). Может кому тоже поможет в похожей ситуации...




© OSzone.net 2001-2012