Страница: 1 |
Страница: 1 |
Вопрос: Пауза в макросе Word
Добавлено: 04.05.09 22:52
Автор вопроса: DrugON__
Опять же ничего не нашел подходящего :(
Впервые столкнулся с Вордом, поэтому не знаю как победить на первый взгляд простую задачу.
При отправке документа на печать необходима пауза несколько секунд (3-х достаточно) для ожидания диалогового окна. Если в Экселе помогало Application.Wait, то Ворд эту команду не понимает.
Каким еще образом можно сделать паузу?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Smith
ICQ: adamis@list.ru
Вопросов: 153
Ответов: 3632
Профиль | | #1
Добавлено: 05.05.09 00:57
Апи Sleep.
Номер ответа: 2
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #2
Добавлено: 05.05.09 09:32
Если не понял, то:
Sub Sleep_Pause()
Sleep 500 'значение в милисекундах(если я не ошибаюсь)
End Sub
Номер ответа: 3
Автор ответа:
DrugON__
Вопросов: 5
Ответов: 21
Профиль | | #3
Добавлено: 05.05.09 10:06
Огромное спасибо. Как мне уже объяснили, тупая пауза - не лучшее решение. Пока воспользуюсь таким способом, а после буду пытаться ловить окно.
Номер ответа: 4
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #4
Добавлено: 05.05.09 10:53
Тебе пауза нужна на время работы vb_скрипта? Если так, то можешь в книжке Дж. Уокенбаха "Профессиональное програмирование на VBA" посмотреть про метод Shell, там как раз неплохое решение для этого есть.
Номер ответа: 5
Автор ответа:
DrugON__
Вопросов: 5
Ответов: 21
Профиль | | #5
Добавлено: 05.05.09 12:42
Михаил a.k.a. AngryBadger, а нет ли у Вас этой книги в электронном варианте? Или ссылочки?
Сам сейчас тоже погуглю...
Номер ответа: 6
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #6
Добавлено: 05.05.09 12:59
mc-black недавно выкладывал где поискать:
Номер ответа: 7
Автор ответа:
DrugON__
Вопросов: 5
Ответов: 21
Профиль | | #7
Добавлено: 05.05.09 15:11
Я уже скачал отсюда:
http://www.zipsites.ru/books/uokenbakh_prof_progre_na_vba_v_excel_2002/
Спасибо!
Номер ответа: 8
Автор ответа:
DrugON__
Вопросов: 5
Ответов: 21
Профиль | | #8
Добавлено: 05.05.09 16:23
Как я понял, этот код усыпляет не приложение, а систему полностью?
Это не есть гуд для меня, мне нужно именно приостановить выполнение кода до того момента, пока не будет создан файл, с которым дальше нужно провести манипуляции (копирование его в разные места).
Попробовал таким вот примитивным макаром:
ActiveDocument.PrintOut ' виртуальный принтер, создающий PDF-файл из активного документа
Back:
If fso.FileExists("" & pdfPath & "\FM_Report.pdf" = True Then
fso.CopyFile "" & pdfPath & "\FM_Report.pdf", "" & fmrPath & "\FM_" & MyDate & ".pdf"
fso.CopyFile "" & pdfPath & "\FM_Report.pdf", "" & netfmrPath & "\FM_" & MyDate & ".pdf"
Kill ("" & pdfPath & "\*.*"
Else
GoTo Back
End If
Без этого код выполняется. не дожидаясь создания файла и выдает ошибку "Файл не найден". Думал таким тупым способом победить, чтобы цикл крутился до тех пор, пока файл не появится в директории. Но он крутится бесконечно и не дает принтеру закончить создание файла.
Как победить?
У меня только одна идея осталась - создание PDF-файла прописать в отдельном макросе и вызывать его отсюда, а уже потом копировать файл. Прокатит?
Номер ответа: 9
Автор ответа:
AngryBadger
Вопросов: 33
Ответов: 245
Профиль | | #9
Добавлено: 05.05.09 16:50
Дай свой мэйл, я тебе попозже листинг из книжки в скане скину, потом запостишь что получилось
Номер ответа: 10
Автор ответа:
DrugON__
Вопросов: 5
Ответов: 21
Профиль | | #10
Добавлено: 06.05.09 16:31
Михаил a.k.a. AngryBadger, DrugON@inbox.ru