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

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

SOFTOBZOR.ru

Гость
#1
Господа, правильно ли я понимаю следующий код:
Код:
	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:
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
#3
Для: SOFTOBZOR.ru

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

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

ErrorHandle:

...

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

А в твоем случае просто убери метку done: - она не используется в приведенном тобой коде
 
E

Elena Nefedova

Гость
#4
Это вопрос к вордовому хелпу:
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.
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
2
#5
<!--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]
Не используется только в этом куске. Но не факт, что вообще.
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
#6
Для: 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]
 
S

SOFTOBZOR.ru

Гость
#7
Проблема вот в чем.

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
Еще на допечатался, а вы его уже закрыть хотите.... как эту байду разрулить?
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
7
#8
Для: SOFTOBZOR.ru

ну так попробуй использовать при вызове PrintOut то что посоветовали: Elena Nefedova
 
E

Elena Nefedova

Гость
#9
<!--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 офис уже вроде бы не поддерживается микрософтом, и спросить не с кого.
 
S

SOFTOBZOR.ru

Гость
#10
Да с радостью бы, только тот кусочик который я вам привел, это 1/1000000 библиотеки, и разруливать ее не представляеться возможным.

Спасибо!

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


Call wordDoc.Save
Sleep (60)
Call wordApp.Quit
 
E

Elena Nefedova

Гость
#11
<!--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. и т.п.
 
S

SOFTOBZOR.ru

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