Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Срочно, помогите, как с VB распечатать и закрыть? Добавлено: 10.08.06 12:27  

Автор вопроса:  ddasoft | Web-сайт: www.ddacore.com | ICQ: 209194603 
Я сформировал отчёт из VB и перекинул данные в Ёксель, туды-сюды, всё отлично, и мне надо чтоб юзер даже не успел увидеть это а чтоб оно сразу отправилось на печать и книга закрылась без сохранения, так как это шаблон.

т.е. нужны команды:
1. Распечатать.
2. Закрыть без сохранения и каких либо клацаний мышкой по кнопкам "Нет" на вопрос "сохранить?"

Помогите кто чем может.
Заранее благодарен.

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #1
Добавлено: 10.08.06 13:27
____ Да включить надо запись макроса в Excel да и посмотреть, что там будет после этих действий (вручную). Может быть потребуется ещё сделать невидимым сам Excel на время этих действий из VB.

Ответить

Номер ответа: 2
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #2 Добавлено: 10.08.06 13:48
set XLObj = CreateObject("Excel.Application";)
xlObj.visible = false
'На всякий случай, по умолчанию его и так не видно
xlObj.workbooks.add
'Тра-ля-ля, формируем отчет
xlObj.ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

while xlObj.Workbooks.Count>0
    xlObj.ActiveWorkbook.Close False
next

xlObj.Quit

Естественно это я так, прямо в броузере набрал, может где-нибудь синтаксическая ошибка или там чего, но в общем идея должна быть понятна.

Ответить

Номер ответа: 3
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #3 Добавлено: 10.08.06 13:49
Только имей в виду, закроются без сохранения все открытые рабочие книги

Ответить

Номер ответа: 4
Автор ответа:
 ddasoft



ICQ: 209194603 

Вопросов: 12
Ответов: 27
 Web-сайт: www.ddacore.com
 Профиль | | #4
Добавлено: 10.08.06 14:35
To "Alexey":

Yes! Yes! Yes! :)

То что нада - супер ...
Пасиба Агромное ...

С меня пиво ;)

Ответить

Номер ответа: 5
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #5 Добавлено: 10.08.06 14:39
А ты откуда? Боюсь что далеко нести будешь, да еще и через таможню оформлять. Я в Киеве.

Ответить

Номер ответа: 6
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #6 Добавлено: 10.08.06 14:40
Да, после While конечно же Wend, а не Next, звиняй, ачепятка.

Ответить

Номер ответа: 7
Автор ответа:
 ddasoft



ICQ: 209194603 

Вопросов: 12
Ответов: 27
 Web-сайт: www.ddacore.com
 Профиль | | #7
Добавлено: 10.08.06 14:48
Недалеко, я с Ужгорода ... на велике как нибуть пришпилю :) ... на крайняк АвтоЛюксом вышлю ;)

я не использовал цикл пробега всех книг, а просто xlObj.ActiveWorkbook.Close False ... ведь у меня только одна открывается и сразу закрывается.

Ответить

Номер ответа: 8
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #8 Добавлено: 10.08.06 15:03
Предпочитаю действовать наверняка. Объясняю почему: если вдруг по каким-то причинам твоя програ не завершила нормально работу предыдущий раз, то ты можешь попасть в Эксель с уже существующим документом, а использование Quit для экселя с открытым документом может привести к выбросу нежелательного для тебя окошка. Гипотетически. В общем рекомендую цикл все-таки оставить.

Ответить

Номер ответа: 9
Автор ответа:
 ddasoft



ICQ: 209194603 

Вопросов: 12
Ответов: 27
 Web-сайт: www.ddacore.com
 Профиль | | #9
Добавлено: 10.08.06 15:37
Ну а если, к примеру, открыт ещё какой-то файл Ёкселя? - оно-ж и его захлопнет? :(
А это не желательно ...
Гипотетически, коль всё будет намана, то и захлопываться будет файлик нормально, ну а если уж прога вылетела, Ёксель невидим и открыт, то его мона рубануть и через Диспетчер задач.

Ответить

Номер ответа: 10
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #10 Добавлено: 10.08.06 15:40
Ну в общем делай как знаешь, я путь показал, мое дело передупердить :)

Ответить

Номер ответа: 11
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #11 Добавлено: 10.08.06 15:42
Лучше всего сделать вот так:

xlObj.ActiveWorkBook.Close False

if xlObj.Workobooks.count = 0 then
    xlObj.Quit
End If

Потому, что если сделаешь Quit, то открытые книги все равно позакрываются, а так закроется только твой документ.

Ответить

Номер ответа: 12
Автор ответа:
 ddasoft



ICQ: 209194603 

Вопросов: 12
Ответов: 27
 Web-сайт: www.ddacore.com
 Профиль | | #12
Добавлено: 10.08.06 15:56
нет ... я проверил ... открыл паралельно документ Ёкселя и кинул на печать отчёт (где в конце он закрывает Ёксель) ... и он не тронул открытый мною файл.
Насколько я понял все действия производимые над обьектом xlObj относятся только к тому что было открыто или создано с помощь него. Чуго он не трогает :)

Ответить

Номер ответа: 13
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #13 Добавлено: 10.08.06 16:05
Ну в общем-то в этом случае ты прав. Дело в том, что я не люблю на каждый запуск моей программы открывать по одному Экселю, тем более что он скрыт и втихую хавает системные ресурсы. Я делаю вот так:

err = 0
On error Resume next

xlObj = GetObject("Excel.Application";)
If err>0 then
    xlObj = CreateObject("Excel.Application";)
End If

Этот код создает новый экземпляр приложения Экселя только в том случае, если нет уже открытых, а если есть открытый эксель, то он работает в нем, иначе в период отладки программы не всегда доводишь ее до места, в котором она закрывает эксель, и после 10 запусков в диспетчере висят 10 экселей. И вот именно в этом случае лучше применять код из поста #11, а в твоем можно и не применять.

Ответить

Номер ответа: 14
Автор ответа:
 ddasoft



ICQ: 209194603 

Вопросов: 12
Ответов: 27
 Web-сайт: www.ddacore.com
 Профиль | | #14
Добавлено: 10.08.06 16:17
ну в общем понятно ...
Я юзерам уже поставил её, печатают вроде намана.
Пока вроде всё хорошо, а там будем посотреть ;)

Спасибо бАльшое за помосчь в трудную минуту и нелёгкий час :)

Ответить

Номер ответа: 15
Автор ответа:
 _ICE_



ICQ: 354-671-214 

Вопросов: 18
Ответов: 103
 Профиль | | #15 Добавлено: 10.08.06 16:33
Да всегда пожалуйста.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам