Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.07.2020, 02:37   #1
Fairyman
 
Регистрация: 25.07.2020
Сообщений: 6
По умолчанию Сменить вид на Одна страница

Добрый день!
Не получается макросом поменять вид на Одна страница или Черновик, так как приложение Word создаётся скрытно (создаётся экселем). Получается что у него нет активного окна. А свойство View есть только у окон.

Как можно решить данную проблему?

В макросе есть такие строчки:
Код:
        .ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitFullPage ' - Одна страница
        .ActiveWindow.View.Type = wdNormalView ' режим черновик - обратно wdPrintView
И они работают в режиме отладки. Но получается игнорируются когда работает сам макрос. Заметно это по скорости работы макроса.
Макрос может работать очень быстро (берётся некий шаблон с одной страницей, размножается и заполняется нужными данными, после чего страниц становится порядка 900штук). Но для того чтобы он работал быстро нужно предварительно убедиться что Word находится в режиме Одна страница. Данный режим после переключения в приложении сохраняется. Но не сохраняется для конкретного документа. Если в последний раз была включена галка Одна страница то документы будут открываться в этом режиме.

Я же хочу в своём макросе включать данный режим автоматом, без предварительных проверок и переключений вручную.
Fairyman вне форума Ответить с цитированием
Старый 29.07.2020, 04:56   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Здравствуйте.
Неверно ставите вопрос, так как wdPageFitFullPage это не вид, а масштаб.
Вам надо поменять вид wdNormalView на вид wdPrintView с масштабом wdPageFitFullPage.

Что-то такое:
Код:
Sub Z1()
    If ActiveWindow.View.SplitSpecial = wdPaneNone Then
        ActiveWindow.ActivePane.View.Type = wdPrintView
    Else
        ActiveWindow.View.Type = wdPrintView
    End If
    ActiveWindow.ActivePane.View.Zoom.PageFit = wdPageFitFullPage
End Sub

Sub Z2()
    If ActiveWindow.View.SplitSpecial = wdPaneNone Then
        ActiveWindow.ActivePane.View.Type = wdNormalView
    Else
        ActiveWindow.View.Type = wdNormalView
    End If
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 02.08.2020, 16:58   #3
Fairyman
 
Регистрация: 25.07.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Вождь Посмотреть сообщение
Что-то такое:
Ваш код это запись макрорекордера. И я это пробовал в разных вариациях. Суть в том что в режиме отладки когда жму F8 пошагово всё прекрасно работает (при этом правда делаю Word видимым). И масштаб переключается и режим черновик включается... Но когда запускается макрос через F5 эти шаги игнорируются (или что-то ещё).
Word запоминает какой был масштаб при прошлом открытии. При этом не важно какой документ открывался. По сути можно открыть файл, сменить масштаб на Одну страница и закрыть файл. Word даже не спросит сохранять файл или нет. Но масштаб сохранит. (Тут вопрос куда где и как он это хранит) И я хочу это менять макросом. Ситуация в прочем крайне редкая. Просто хотелось докопаться до сути.
Fairyman вне форума Ответить с цитированием
Старый 03.08.2020, 04:49   #4
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

Раз уж вы не приводите ваш полный код, то пробуйте вариации этого кода:
Код:
With Word.ActiveWindow.ActivePane.View
    .Type = wdNormalView
    .Type = wdPrintView
    .Zoom.PageColumns = 1
    .Zoom.Percentage = 100
    .Zoom.PageFit = wdPageFitFullPage
End With
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 04.08.2020, 01:19   #5
Fairyman
 
Регистрация: 25.07.2020
Сообщений: 6
По умолчанию

Вождь, код слишком большой. Чтобы выцепить нужное потребуется некоторое время.
Возможно у меня на компе какой-то глюк или это глюк ворда.
Вот тут вычитал что масштаб и вид сохраняются для каждого документа отдельно. Но у меня не так.
Те строчки кода из первого сообщения всё же меняют масштаб. Однако на скорость макроса это не влияет. Влияет только когда я делаю это вручную! То есть когда я шаблон сохраняю с масштабом одна страница, макрос работает быстро. Но стоит только уменьшить масштаб или поменять масштаб на несколько страниц причём в ЛЮБОМ документе (и даже не сохраняя файл), макрос начинает работать медленно.
При этом заметил такой глюк. Если специально сохранить шаблон с маленьким масштабом и запустить макрос то ожидаемо он отработает медленно. Затем если после такой медленной обработки зайти в шаблон который открывает макрос но при этом не сохраняет его, то окажется что масштаб изменился - стал в одну страницу (это доказывает что строчки кода из первого сообщения работают). НО если закрыть файл и снова его открыть, то можно увидеть тот специально сохранённый уменьшенный масштаб!
Также если запускать макрос подряд то последующие запуски не ускоряют работу. Хотя по идее должны бы. Ведь макрос меняет масштаб и значит скорость должна измениться. Но нет.

Поизучал также объекты Options. Но не нашёл среди них ничего чтобы мне могло помочь. Был там некий Options.AllowOpenInDraftView. Но он ничего не дал. Так и не понял зачем это вообще нужно. Справка особо не поясняет.
Fairyman вне форума Ответить с цитированием
Старый 04.08.2020, 07:36   #6
сфинкс
Форумчанин
 
Аватар для сфинкс
 
Регистрация: 17.06.2012
Сообщений: 954
По умолчанию

В сообщении про макросы
https://programmersforum.ru/showthre...51#post1818251

при форматировании черновика и чистовика
переключают вид страниц строки:

ActiveWindow.View.Type = wdNormalView

ActiveWindow.View.Type = wdPageView

ActiveWindow.ActivePane.View.Zoom.P ageFit = wdPageFitBestFit
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
сфинкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сменить DNS? Ivan Denis Безопасность, Шифрование 1 20.08.2017 01:15
Visual Basic. Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобка.Вывести текст между скобками Nember Помощь студентам 3 21.12.2013 22:04
Не получается сменить фон у ListView. Нужно как-то сменить обработку WM_ERASEBKGND, судя по всему TwiX Win Api 2 09.06.2013 23:25
сменить IP Андрей991 Безопасность, Шифрование 6 29.11.2011 16:52
как сменить ник ??? maladoy О форуме и сайтах клуба 12 07.02.2009 19:45