Перейти на страницу word vba

0 / 0 / 0

Регистрация: 26.10.2010

Сообщений: 6

1

21.11.2011, 12:08. Показов 10446. Ответов 1


Студворк — интернет-сервис помощи студентам

Подскажите, как программно перейти на нужную страницу документа Word, не используя Selection (через свойства самого документа)?
Через Selection знаю:

Код

object.ActiveWindow.Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:="2"
object.ActiveWindow.Selection.Find.ClearFormatting

Спасибо!



0



1 / 1 / 1

Регистрация: 10.04.2011

Сообщений: 415

21.11.2011, 13:11

2

Переход на страницу 100:
Selection.GoTo What:=wdGoToPage, Which:=wdGoToFirst, Count:=100, Name:=»»

пользуйтесь макрорекордером, господа…



0



Okay,

so for my apprenticeship I need to keep record of what I do everyday. Since this is going to be a long doc, I wrote a VBA script which already writes stuff that stays the same, like the date, in there.

Problem is, the format is supposed to be one week per page. Means, when I arrive at saturday, the script would have to jump to the beginning of the next page(and probably fill the resulting space with paragraphs). And I have absolutely no clue if there is any function that could help me with that. I think there should be one tho, this doesn’t Sound like a too exotic Problem.

Now this is no crucial problem, but it’s annoying nonetheless and I’d like to know if there is any solution for this. Research so far didn’t do the trick either.

Have some code if that helps understanding. Ist basically about the commented part:

For i = InitDate To endDate
jump:
  If CurrentDate = endDate Then GoTo EndSub
    x = x + 1
    strWeekday = weekday(CurrentDate, vbUseSystemDayOfWeek)
    txtStr = Format(CurrentDate, "dddddd")
     With Selection
     .Font.Bold = True
     .Font.Underline = True
     .TypeText Text:=txtStr
     .TypeParagraph
    If x = 4 Then GoTo Thursday
    If x = 5 Then GoTo Friday
   'If x = 6 Then GoTo NewSheet
    If x = 6 Then x = 0

    .TypeParagraph
    End With
CurrentDate = CurrentDate + 1

Next i

Формулировка задачи:

Понимаю, что тема уже обсуждалась, но возник вопрос, как переместиться на нужную строку нужной страницы? Есть документ из нескольких страниц, нужно вставить таблицу на n-ю строку n-ой страницы. Делаю следующим образом:

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

Код к задаче: «Как в Word перейти на нужную страницу и строку»

textual

DocWord.Application.Selection.MoveDown 5, 4 'wdLine=5

Полезно ли:

7   голосов , оценка 3.571 из 5

 

Slaventy

Пользователь

Сообщений: 22
Регистрация: 26.11.2013

#1

23.12.2013 19:04:31

Здравствуйте
Возникла проблема. Я копирую таблицу из excel в Word. Так как у меня в Excel большая таблица, то мне надо в Word копировать таблицы по 10 строчек на страницу. Я на первую страницу могу скопировать, но как перейти на вторую и начать там делать не знаю. Мне кажется где-то на форуме я встречал что-то подобное, но никак не могу найти.
Я вначале думал строкой

Код
   objDoc.Application.Visible = True
   objDoc.Selection.MoveDown Unit = 5, count = 5 

Но не получилось. Я могу перейти в конец документа, но перейди на вторую не получилось
Подскажите как переходить на вторую страницу в Word?

P.S. (приложил файл моего кода, если кому-то надо глянуть на код, того что я делаю)

Прикрепленные файлы

  • 21122013.xlsm (29.78 КБ)

 

Антон

Пользователь

Сообщений: 617
Регистрация: 01.01.1970

#2

23.12.2013 19:32:09

http://msdn.microsoft.com/en-us/library/office/ff821348.aspx

не забываем читать.

Код
If ActiveDocument.Endnotes.Count >= 2 Then   
Selection.GoTo What:=wdGoToEndnote, Which:=wdGoToAbsolute, Count:=2  
End If

должно сработать

 

Slaventy

Пользователь

Сообщений: 22
Регистрация: 26.11.2013

#3

23.12.2013 21:24:44

Антон

вашим способом не получается.
Я так понимаю функция GoTo может перейти на уже существующие страницы, а у меня существует только одна страница и мне каким-то образом надо её создать и потом перейти.
Либо ещё как-то это сделать.

Я создал документ ворд

Код
    Dim objWord As Object
    On Error Resume Next
    Application.ScreenUpdating = False
    Set objWord = GetObject(, "Word.Application")
    If Err Then Set objWord = CreateObject("Word.Application")

    Set objDoc = objWord.Documents.Add()
    objDoc.ActiveWindow.ActivePane.View.Zoom.Percentage = 100
 
    With objDoc
        .PageSetup.PaperSize = 8   '
        .PageSetup.Orientation = 1 '
        .Parent.Visible = True
    End With
 

вывел десять строк

Код
    For i = 1 To 11

        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(2), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(3), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(5), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(4), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(9), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(6), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
        objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(15), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
    Next i
 

А теперь мне надо перейти на вторую страницу и там вывести следующие 10 строк.

Вопрос. Как перейти на вторую страницу документа ворд, если из макроса экселя создался документ имеющий одну страницу?

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

#4

23.12.2013 22:06:45

Цитата
…может перейти на уже существующие страницы, а у меня существует только одна страница и мне каким-то образом надо её создать и потом перейти.

А как Вы вручную это делаете в Word?

 

Slaventy

Пользователь

Сообщений: 22
Регистрация: 26.11.2013

#5

23.12.2013 22:40:00

Вручную я просто нажимаю Enter. Я так понимаю мне предлагают просто добавить пустой параграф.

Код
objDoc.Activate  
objWord.Selection.TypeParagraph 

Если я прав то пожалуйста скажите мне.
И ещё вопрос.
И ещё небольшой вопрос. (я конечно ещё по форуму посмотрю, но если не трудно будет подсказать, буду благодарен)

я добавляю таблицу

Код
    For i = 1 To 11

     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(2), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(3), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(5), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(4), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(9), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(6), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
     objDoc.Shapes.AddTextbox(msoTextOrientationHorizontal, Application.CentimetersToPoints(15), Application.CentimetersToPoints(7 + 0.5 * i), Application.CentimetersToPoints(2), Application.CentimetersToPoints(0.5)).TextFrame.TextRange.Text = CStr(i)
    Next i 

Вот вычитал

Код
' Перемещаемся в конец Word-документа 
objDoc.Activate 
objWord.Selection.EndKey Unit:=6 ' 6 = wdStory 
 

Но у меня почему-то не переходит на конец таблицы. И когда я добавляю параграфы, то идёт и смещение таблицы.
Как перейти на конец таблицы, чтобы добавляя параграфы не смещать её?

 

Юрий М

Модератор

Сообщений: 60586
Регистрация: 14.09.2012

Контакты см. в профиле

Наверное, эти вопросы лучше задать на форуме по Word… Или попробовать записать рекордером.

 

Slaventy

Пользователь

Сообщений: 22
Регистрация: 26.11.2013

#7

24.12.2013 13:20:25

Спасибо. Буду искать решение.

V88


  • #1

Здравствуйте!
Кто знает как программно реализовать переход на указанную страницу MS Word (желательно в ее начало)?
Заранее спасибо.

etc


  • #2

Если открыть ворд, начать запись макроса и перейти на указанную страницу, то маскос расскажет как!

V88


  • #3

Вот это получается :
Sub Макрос3()

‘ Макрос3 Макрос
‘ Макрос записан 27.08.2010 Admin

Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Name:=»2″
Selection.Find.ClearFormatting
With Selection.Find
.Text = «»
.Replacement.Text = «»
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
End Sub

И как это реализовать в Delphi? :newconfus:

Можно также прописать заранее в докумене-Ворд макрос, а потом в дельфи его выполнять, НО как его выполнить в Delphi? На функцию Run(«[имя макроса]») Delphi ругается.
В гугле искал — там только про Excel, а про Word ничего толком не нашел. C Excelem Run работает, а вот в Wordom почему-то нет :(

hosm


  • #4

переписать со скобками.
имена параметров опускаются, порядок параметров уточняется в хелпе ВБА ворда.
т.е. должно быть нечто типа такого:
WordApp.Selection.GoTo(wdGoToPage, 2);

Добавлено:

В гугле искал — там только про Excel, а про Word ничего толком не нашел.

всё вот вы врете и не краснеете =)
вот пример, в котором встречается код по переходу на страницу

Ссылка скрыта от гостей

вот пример по поиску-замене:

Ссылка скрыта от гостей

имена параметров опускаются, порядок параметров уточняется в хелпе ВБА ворда.

гы, а в делфях это не обязательно делать, судя по примерам, прокушивает и такой вид, как (имя:=значение)

etc


  • #5

прокушивает и такой вид, как (имя:=значение)

В справке делфевой об этом спец. параграф есть.

Автор искал не по тому ключевому слову. :newconfus:

hosm


  • #6

В справке делфевой об этом спец. параграф есть.

ну, я их иде лет 8 не видела. или уже даже 9 =)

V88


etc


  • #8

А справку принципиально не открываем?

Like this post? Please share to your friends:
  • Перейти на последний столбец excel
  • Перейти на альбомную страницу в word
  • Перейти к первому листу excel
  • Перейти в созданный excel
  • Перейти в начало строки word