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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 01:22   #1
kovalevskivf
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 26
По умолчанию Запрет запуска программы на VBA в случае если Excel уже открыт

Каким образом перед запуском программы на VBA сделать проверку на предмет открыт или не открыт Excel на компе. Если уже открыт, то запретить запуск моей программы. Нашел вариант решения проблемы:
Код:
If Tasks.Exists(Name:="Microsoft Excel") = True Then
...
Вставляю ее в Private Sub Workbook_Open(), однако у меня этот код не работает, выскакивает ошибка 424.
Пожалуйста, подскажите в чем тут дело и можно ли решить мою проблему.
kovalevskivf вне форума Ответить с цитированием
Старый 01.09.2009, 04:42   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Не совсем понятно, из какого приложения Вы собираетесь запускать процедуру на VBA, чтобы перед ее запуском
Цитата:
сделать проверку на предмет открыт или не открыт Excel на компе
Может быть Вам нужно запретить открытие книги, если Excel уже открыт? Тогда можно в модуль "Эта книга" открываемого файла Excel вставить код
Код:
Private Sub Workbook_Open()
    If Workbooks.Count > 1 Then ThisWorkbook.Close
End Sub
Т.е. при открытии выполнить проверку: если уже открыта хотя бы одна книга, то сразу закрыть эту.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 01.09.2009, 09:07   #3
kovalevskivf
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 26
По умолчанию

Да, именно это я имел в виду. Большое спасибо за помощь!
kovalevskivf вне форума Ответить с цитированием
Старый 01.09.2009, 10:06   #4
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

kovalevskivf, Task.Exists это конструкция из VBA MS WORD.
Помимо способа, указанного SAS888 можно попробовать код
Код:
Dim oEx as Object
On error resume next
Set oEx =  GetObject(, "Excel.Application")
if Not oEx is Nothing then
     Debug.Print "Есть активный Excel"
     'дополнительно можно проверить свойство oEx.Visible
else
     Debug.Print "Нет активного Excel"
end if
для того что бы узнать есть ли в системе активный экземпляр Excel из отличного от Excel приложения

Последний раз редактировалось Aent; 01.09.2009 в 10:19.
Aent вне форума Ответить с цитированием
Старый 01.09.2009, 11:22   #5
kovalevskivf
Пользователь
 
Регистрация: 28.04.2009
Сообщений: 26
По умолчанию

Спасибо, буду пробовать.
kovalevskivf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Запрет запуска второй копии программы Ash Общие вопросы Delphi 9 17.04.2017 10:56
Запрет запуска приложений Google[Bot] Безопасность, Шифрование 21 16.01.2013 17:31
Запуск какой либо Windows-программы из Excel средствами VBA kovalevskivf Microsoft Office Excel 3 21.05.2009 15:14
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 kovalevskivf Microsoft Office Excel 2 15.05.2009 16:47
Ошибка и падение (выход) Excel при выполнении сложной программы на VBA Serge_Bliznykov Microsoft Office Excel 6 13.08.2008 16:50