Нужен код Word VBA для перемещения курсора в конец первого столбца в макете страницы с двумя столбцами - PullRequest
0 голосов
/ 11 октября 2019

У меня есть макрос Word VB, который автоматически вставляет чертеж Visio в макет из двух столбцов. Код работает хорошо, но я бы хотел еще больше автоматизировать процесс. Для этого я специально ищу код, который переместит курсор в конец первого столбца выбранной страницы. Обычно в этом столбце нет разрыва столбца, поэтому мое решение не может включать поиск разрывов столбцов. И я считаю, что у меня уже есть код, который выбирает текущую страницу, но не конец первого столбца на этой странице.

Я могу программно переместить курсор в конец страницы и могупрограммно переместить курсор на верх страницы. Я просто не могу заставить курсор переместиться в конец первого столбца текста. Все онлайн-примеры, которые я нашел до сих пор, сосредоточены на перемещении к концу столбца в таблице, но не к концу столбца текста в макете с двумя столбцами.

10/15/ 2019: Вот пример страницы, запрошенной @ cindym

[SamplePage] [1]

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

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

Частично основываясь на предложении CindyM, я попробовал следующее для двухКолонка Visio в нижней части текущей страницы, но после третьей строки кода все идет не так. Помимо этой первоначальной проблемы размещения курсора на основе VBA, остальная часть моего кода работает нормально (выбирает Visio, вставляет непрерывные разрывы, вставляет подпись к рисунку и т. Д.). Надеюсь, это поможет уточнить. Еще раз спасибо!

    `ActiveDocument.Bookmarks("\Page") `Select selects current page` 
    Selection.GoToNext (wdGoToPage)  `cursor at top of page 2`
    Selection.MoveEnd wdCharacter, -1 `cursor now at end of target page`
    Selection.MoveRight Unit:=wdItem  `cursor now in headline, top of page :(`  
    Selection.MoveRight Unit:=wdItem


  [1]: https://i.stack.imgur.com/OR7BF.png

1 Ответ

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

Поскольку в вопросе в качестве отправной точки не было включено ни одного кода, в следующем тексте GoTo используется для перехода на определенную страницу. Предполагается, что эта позиция составляет , а не газетную колонку. Затем выполняется эквивалент нажатия Alt + стрелка вниз дважды в пользовательском интерфейсе для перехода к следующему TextColumn (газетный столбец), который будет началом следующего столбца после первый. Затем выделение перемещается назад на один символ, чтобы поместить его в конец столбца.

Если верхняя часть страницы является газетным столбцом, а код должен переместиться в конец этого столбца, то удалите одинSelection.MoveRight Unit:=wdItem строк.

Sub MoveToEndOfNextNewspaperColumn()
    Dim goToPageNr As String

    goToPageNr = "1"

    Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=goToPageNr

    Selection.MoveRight Unit:=wdItem
    Selection.MoveRight Unit:=wdItem

    Selection.MoveEnd Unit:=wdCharacter, Count:=-1
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...