как добраться до курсора до конца текстового поля в издателе 2016 с макросом VBA - PullRequest
1 голос
/ 07 ноября 2019

Я разрабатываю макрос для газеты в MS Publisher. Кажется, что опция «растянуть текстовое поле, чтобы уместить текст» не работает для следующего связанного текстового поля, но я нашел ручную уловку:

  • установить фокус на первое текстовое поле
  • нажмите Ctrl+ кнопка конца, чтобы добраться до курсора до конца текстового поля
  • нажмите клавиши Ctrl + Shift + стрелка вниз
  • Ctrl + Shift + End для выбора оставшегося текста следующего связанного текстового поля
  • нажмите Ctrl+ X, чтобы обрезать его, а затем разорвать Ссылка первого текстового поля
  • , выбрать второе текстовое поле и нажать Ctrl + v, чтобы вставить вырезанный текст во второе текстовое поле
  • , затем установить параметр «Увеличить текстовое поле до размера текста» ввкладка форматирования.

Это легко и удобно для вас в ручном режиме, но было бы удивительно, если бы кто-то мог помочь мне сделать те же самые шаги с макро-кодированием vba.

Я повторяю шагидля цели макроса:

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

Я успешенпри связывании текстовых полей в vba, который выглядит так:

    ActiveDocument.Pages(1).Shapes(1).TextFrame.NextLinkedTextFrame = ActiveDocument.Pages(1).Shapes(2).TextFrame
 ActiveDocument.Pages(1).Shapes(2).TextFrame.AutoFitText = pbTextAutoFitShrinkOnOverflow

Я хочу сделать автоматический газетный макрос.

1 Ответ

0 голосов
/ 10 ноября 2019
    I got it.....
it is as simple as...

    Dim shpTextBox As Shape

Set shpTextBox = ActiveDocument.Pages(1).Shapes.AddTextbox _
 (Orientation:=pbTextOrientationHorizontal, _
 Left:=0, Top:=0, _
 Width:=100, Height:=100)
 ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.Text = "A Quick Brown Fox Jumps over the lazy Dog, A Quick Brown Fox Jumps over the lazy Dog, A Quick Brown Fox Jumps over the lazy Dog"




Set shpTextBox = ActiveDocument.Pages(1).Shapes.AddTextbox _
 (Orientation:=pbTextOrientationHorizontal, _
 Left:=500, Top:=500, _
 Width:=500, Height:=300)

ActiveDocument.Pages(1).Shapes(1).TextFrame.NextLinkedTextFrame = ActiveDocument.Pages(1).Shapes(2).TextFrame

ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.Select
If Selection.Type = pbSelectionText Then

MsgBox ActiveDocument.Pages(1).Shapes(1).TextFrame.TextRange.Text


End If


ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange.Select
If Selection.Type = pbSelectionText Then

MsgBox ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange.Text



ActiveDocument.Selection.TextRange.Cut
'ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange.Cut

ActiveDocument.Pages(1).Shapes(1).TextFrame.BreakForwardLink



ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange.Paste
ActiveDocument.Pages(1).Shapes(2).TextFrame.TextRange.Select
ActiveDocument.Pages(1).Shapes(2).Width = 50

ActiveDocument.Pages(1).Shapes(2).TextFrame.AutoFitText = pbTextAutoFitGrowToFit

End If

    ActiveDocument.Pages(1).Shapes(2).TextFrame.AutoFitText = pbTextAutoFitGrowToFit
...