Создание элементов коллекции появляется в слове VBA - PullRequest
0 голосов
/ 18 октября 2019

Я создал большой макрос в MS Word VBA, который просматривает множество таблиц и встроенных фигур и с помощью копирования-вставки переставляет их после некоторых манипуляций. Проблема возникает, когда более 50-60 таблиц и фигур, макросу требуется 60 секунд для завершения, и я получаю случайные сбои (примерно 10-20% времени), которые, как я подозреваю, происходят из-за проблем с перегрузкой буфера обмена и слишком частого использования "Выбрать». Мне было предложено просто использовать коллекции для хранения форм и таблиц (что сработало) и улучшить код, что я сейчас пытаюсь сделать, но я не могу найти метод или способ заставить элементы коллекции появляться в Word.

Я прошу что-то вроде collect (1) .Show, которое будет работать с текущим выбранным абзацем или хотя бы методом collect (1) .PlaceIt (there), чтобы я мог вводить координаты абзацев i. хотите, чтобы фигура или таблица отображались в.

1 Ответ

0 голосов
/ 25 октября 2019

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

Selection.Range.FormattedText = ActiveDocument.InlineShapes(1).Range.FormattedText

Вместо выделения его можно использовать с абзацами, например

Parahraphs(1).Range.FormattedText = ActiveDocument.Tables(1).Range.FormattedText

. Делает объекты изколлекция должна появиться в нужном месте (как копии, не удаляет оригинальные). Этот метод намного быстрее, чем копировать и вставлять. Мой сценарий теперь примерно в 4 раза быстрее (~ 62 с -> 17 с примерно с 60 таблицами и 60 встроенными фигурами), и я не получаю случайные ошибки буфера обмена, когда использую слишком много таблиц / диаграмм.

...