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

Тема в разделе "Lotus - Программирование", создана пользователем SOFTOBZOR.ru, 25 янв 2007.

Статус темы:
Закрыта.
  1. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

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

    Call wordDoc.Save
    Call wordApp.Quit

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

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

    Мне надо так

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

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

    Exit Sub
    Т.е. поможет ли этот done:
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    :(
    done: это метка.

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

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Для: SOFTOBZOR.ru

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

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

    ErrorHandle:

    ...

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

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

    Elena Nefedova Гость

    Это вопрос к вордовому хелпу:
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--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]
    Не используется только в этом куске. Но не факт, что вообще.
     
  6. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Для: 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]
     
  7. SOFTOBZOR.ru

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

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Для: SOFTOBZOR.ru

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

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

    SOFTOBZOR.ru Гость

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

    Спасибо!

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


    Call wordDoc.Save
    Sleep (60)
    Call wordApp.Quit
     
  11. Elena Nefedova

    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. и т.п.
     
  12. SOFTOBZOR.ru

    SOFTOBZOR.ru Гость

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

Поделиться этой страницей