Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 17:24   #1
kolebatel
 
Регистрация: 11.06.2008
Сообщений: 7
По умолчанию Проверять работу Excel из Outlook

Добрый день! Как можно с помощью Outlook контролировать работу Excel-файла, который выполняется регулярно? цель - защитить работу макроса в Excel от закрывания книги и остановки его работы.
Не подскажите наиболее просто решение ? может, можно вовсе обойтись без Outlook?
kolebatel вне форума Ответить с цитированием
Старый 27.05.2009, 17:50   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
контролировать работу Excel-файла, который выполняется регулярно
А что это такое - "выполняющийся файл"?

Цитата:
цель - защитить работу макроса в Excel от закрывания книги и остановки его работы.
Ну, макрос и сам легко себя защитит от всего, чего угодно...

Простейший пример можно посмотреть в этом посте:
http://www.programmersforum.ru/showp...32&postcount=4

Запустите макрос, и попробуйте его остановить.
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2009, 18:52   #3
kolebatel
 
Регистрация: 11.06.2008
Сообщений: 7
По умолчанию

выполняющий файл - файл Excel, в котором выполняется макрос.
я нашел такой код, который определяет, что приложение Excel открыто:

Sub A1()
Dim xlApp, k ' As Object
On Error Resume Next
xlApp = GetObject(, "Excel.Application") 'пытаемся получить ссылку на уже запущенное приложение
end sub

функция работает, открытое приложение ищется. Но возникла другая проблема: как из Outlook проверить, что в работающей приложении открыта именно выполняющийся файл? Вот этого пока получить не удалось
kolebatel вне форума Ответить с цитированием
Старый 27.05.2009, 19:01   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Код:
Function ИмяОткрытогоФайлаExcel() As String
    On Error Resume Next
    ИмяОткрытогоФайлаExcel = GetObject(, "Excel.Application").activeworkbook.Name
End Function

Sub ПримерИспользования()
    If ИмяОткрытогоФайлаExcel = "" Then
        MsgBox "Приложение Excel не запущено, или ни один файл не открыт", vbExclamation
    Else
        MsgBox "Открыта книга Excel:  " & ИмяОткрытогоФайлаExcel, vbInformation
    End If
End Sub
Ну и ещё:
Код:
Function Excel_Запущен() As Boolean
    On Error Resume Next: Set XL = GetObject(, "Excel.Application")
    Excel_Запущен = Not (XL Is Nothing)
End Function

Sub ПримерИспользования2()
    If Excel_Запущен Then MsgBox "Приложение Excel запущено"
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 27.05.2009, 19:11   #5
kolebatel
 
Регистрация: 11.06.2008
Сообщений: 7
По умолчанию

спасибо большое. выцепил свой файл.
еще такой вопрос возник по ходу: не знаете ли какой-нибудь функции в VBA Outlook, аналогичную application.ontime в Excel? чтобы осуществлять проверку открытого приложения excel, например, раз в 10 минут? а то вот этого я что-то нигде не смог найти.
А по поводу того, что макрос сам себя защитит: во время ожидания, задаваемого через application.ontime файл очень хорошо закрывался.
kolebatel вне форума Ответить с цитированием
Старый 27.05.2009, 19:25   #6
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Увы, с Outlook-ом не дружу...

А чем Вас не устраивает стандартная VBA-функция Timer?
Примеров на форуме множество - запустите поиск по этому разделу с ключевым словом Timer.
Вот некоторые из них:
http://www.programmersforum.ru/showp...41&postcount=2
http://www.programmersforum.ru/showp...8&postcount=10

Цитата:
во время ожидания, задаваемого через application.ontime файл очень хорошо закрывался
А как Вы пытались предотвратить закрытие книги?
Так пробовали?
Код:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
   Cancel = True
End Sub
(Этот код надо добавить в модуль ЭтаКнига файла Excel)
EducatedFool вне форума Ответить с цитированием
Старый 28.05.2009, 11:50   #7
kolebatel
 
Регистрация: 11.06.2008
Сообщений: 7
По умолчанию

Timer не нравится тем, что он занимает процессор, а ontime этого не делает.
последний вариант не провобовал, спасибо за пример, щас попробую.
kolebatel вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из Excel в OutLook (не всё так просто...) Koddo Microsoft Office Excel 8 19.01.2011 14:34
Сбор отчетов из Outlook в Excel zazuza Microsoft Office Excel 4 17.04.2009 19:13
Excel и Outlook Barabanoff Microsoft Office Excel 6 25.07.2008 08:14
Как стянуть праздники с Outlook v Excel jungo Microsoft Office Excel 1 30.06.2008 23:58
MS Excel и MS Outlook (2003) отсылка писем IceB Microsoft Office Excel 1 02.07.2007 13:32