Срочный вопрос [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:
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
:(
done: это метка.

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

DNT

Для: SOFTOBZOR.ru

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

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

ErrorHandle:

...

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

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

Elena Nefedova

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

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
6
<!--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]
Не используется только в этом куске. Но не факт, что вообще.
 
D

DNT

Для: 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

Проблема вот в чем.

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

DNT

Для: SOFTOBZOR.ru

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

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

SOFTOBZOR.ru

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

Спасибо!

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


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

Elena Nefedova

<!--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

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

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