Срочный вопрос [done:]

  • Автор темы Автор темы SOFTOBZOR.ru
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
S

SOFTOBZOR.ru

Господа, правильно ли я понимаю следующий код:
Код:
	If IsAutoPrint Then Call wordDoc.PrintOut	

Call wordDoc.Save
Call wordApp.Quit

done:	
Exit Sub

Сначало обьявляеться процедура wordDoc.PrintOut
Далее сразу идет
Call wordDoc.Save
Call wordApp.Quit

потом (done:) - если выполнены все процедуры - выход

Мне надо так

Сначало идет печать, когда она завершиться сохранить и закрыть, поможет ли такое переделывание?

Код:
	If IsAutoPrint Then Call wordDoc.PrintOut	
done:	
Call wordDoc.Save
Call wordApp.Quit

Exit Sub

Т.е. поможет ли этот done:
 
:(
done: это метка.

Для безусловного перехода.
 
Для: SOFTOBZOR.ru

на эту метку ты можешь прыгнуть при помощи GoTo, например

...
On Error Goto ErrorHandle
...
...

ErrorHandle:

...

почитай хелп. :(

А в твоем случае просто убери метку done: - она не используется в приведенном тобой коде
 
Это вопрос к вордовому хелпу:
expression.PrintOut(Background, Append, Range, OutputFileName, From, To, Item, Copies, Pages, PageType, PrintToFile, Collate, FileName, ActivePrinterMacGX, ManualDuplexPrint, PrintZoomColumn, PrintZoomRow, PrintZoomPaperWidth, PrintZoomPaperHeight)

expression Required. An expression that returns one of the above objects.

Background Optional Variant. Set to True to have the macro continue while Microsoft Word prints the document.
 
<!--QuoteBegin-DNT+25:01:2007, 11:02 -->
<span class="vbquote">(DNT @ 25:01:2007, 11:02 )</span><!--QuoteEBegin-->А в твоем случае просто убери метку done: - она не используется в приведенном тобой коде

[snapback]54024" rel="nofollow" target="_blank[/snapback]​
[/quote]
Не используется только в этом куске. Но не факт, что вообще.
 
Для: Medevic

совершенно верно, я имел ввиду :(

<!--QuoteBegin-DNT+25:01:2007, 10:02 -->
<span class="vbquote">(DNT @ 25:01:2007, 10:02 )</span><!--QuoteEBegin-->в приведенном тобой коде

[snapback]54024" rel="nofollow" target="_blank[/snapback]​
[/quote]
 
Проблема вот в чем.

If IsAutoPrint Then Call wordDoc.PrintOut
Call wordDoc.Save
Call wordApp.Quit
done:
Exit Sub

wordDoc.PrintOut - Выводит документ на печать, предварительно сделано
Let wordApp.Visible = False' Чтобы Word был открыт фоном
Теперь самое интересно, док печатаеться, сохраняеться тихоничко, процесс убиваеться.

Но... это все в 2003 word а вот 2000 word - ругаеться на то что документ который мы
Call wordDoc.Save
Call wordApp.Quit
Еще на допечатался, а вы его уже закрыть хотите.... как эту байду разрулить?
 
Для: SOFTOBZOR.ru

ну так попробуй использовать при вызове PrintOut то что посоветовали: Elena Nefedova
 
<!--QuoteBegin-SOFTOBZOR.ru+25:01:2007, 11:16 -->
<span class="vbquote">(SOFTOBZOR.ru @ 25:01:2007, 11:16 )</span><!--QuoteEBegin-->Но... это все в 2003 word а вот 2000 word - ругаеться на то что документ который мы
Call wordDoc.Save
Call wordApp.Quit
Еще на допечатался, а вы его уже закрыть хотите.... как эту байду разрулить?
[snapback]54029" rel="nofollow" target="_blank[/snapback]​
[/quote]С 2000 офисом у лотуса имеется какая-то непонятная асинхронность выполнения (по крайней мере у 6-го).
Придется Sleep вставлять. Потому как 2000 офис уже вроде бы не поддерживается микрософтом, и спросить не с кого.
 
Да с радостью бы, только тот кусочик который я вам привел, это 1/1000000 библиотеки, и разруливать ее не представляеться возможным.

Спасибо!

То есть что-то типа того


Call wordDoc.Save
Sleep (60)
Call wordApp.Quit
 
<!--QuoteBegin-SOFTOBZOR.ru+25:01:2007, 11:27 -->
<span class="vbquote">(SOFTOBZOR.ru @ 25:01:2007, 11:27 )</span><!--QuoteEBegin-->о есть что-то типа того
Call wordDoc.Save
Sleep (60)
Call wordApp.Quit
[snapback]54034" rel="nofollow" target="_blank[/snapback]​
[/quote]Ну можно еще немного извратиться, поймать код возвращаемой лотусом ошибки (перед этим надо загасить вывод ошибок в свойсвах wordApp)
Ну и сделать что-то вроде цикла, допустим, от 1 до 120 с телом sleep(1), закрытием документа и переходом на обработку ошибки с конкретным найденным номером и дальнейшим возвратом на дополнительную метку, чтобы повторить sleep(1)
Так хоть будем вовремя выходить - без лишнего ожидания.

Можно еще сделать запрос к пользователю с вариантами выбора:
  1. подтвердить завершение печати
  2. прервать выполнение кода
  3. и т.п.
 
Понятно, думаю лучший фариант это типа прогресс бар с циклом от 1 до 100 и текст ждите.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!