Как проверить включен ли Excel?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Flo
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.03.2004 (Вт) 16:43
Откуда: Таллинн, Эстония

Как проверить включен ли Excel?

Сообщение Flo » 26.04.2004 (Пн) 19:43

Уважаемые, подскажите, пожалуйста. Я делаю так:
Код: Выделить всё
Set xl = CreateObject("Excel.Sheet")
xl.Application.Visible = True

При этом, если этот код уже выполнялся, Excel после этого не закрыли и он уже, так сказать Visible, то получается ошибка ( пишет много-много цифр и Automation error), что в общем-то логично. :?

Вопрос в том, как проверить, что там в Excel'е уже что-то открыто и в таком случае просто создать в нем новый лист (или книгу, все равно). :?:
Дело может и не совсем в этом. Проверила, если Excel открыть вручную (просто запустить), то такой код добавляет все без ошибок. Значит я что-то неправильно открываю (объявляю)? :shock: Переменная
Код: Выделить всё
Global xl As Object
В чем может быть дело?

Max!
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 502
Зарегистрирован: 03.04.2003 (Чт) 22:08
Откуда: Литва

Сообщение Max! » 26.04.2004 (Пн) 23:53

Мне тут на форуме замечательные люди дали вот такой код
Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim Str As String

Private Sub Form_Load()
Str = "Загаловак окна"
End Sub

Private Sub Timer1_Timer()
Dim Wnd As Long
Wnd = FindWindow(vbNullString, Str)
If Wnd = 0 Then Exit Sub
MsgBox "Прога запущена"
End Sub

Здесь отлавливается заголовок окна ! ( В Timer1 интервал ставь 1)
:wink:
Max!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 27.04.2004 (Вт) 3:37

Надо искать не по имени окна, а по классу...

Код: Выделить всё
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Form_Load()
If FindWindow("XLMAIN", vbNullString) > 0 Then
    MsgBox "Excel запущен!"
Else
    MsgBox "Excel не запущен!"
End If
End Sub

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 27.04.2004 (Вт) 9:04

Самый простой способ - это использовать функцию GetObject
Код: Выделить всё
Private Sub Form_Load()
  On Error Resume Next
  If Not GetObject(, "Excel.Application") Is Nothing Then
    MsgBox "Excel запущен!"
  Else
    MsgBox "Excel не запущен!"
  End If
  Unload Me
End Sub
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Flo
Обычный пользователь
Обычный пользователь
 
Сообщения: 90
Зарегистрирован: 09.03.2004 (Вт) 16:43
Откуда: Таллинн, Эстония

Сообщение Flo » 27.04.2004 (Вт) 9:42

Всем большое спасибо. Люди тут на форуме действительно замечательные, полностью согласна! :wink:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 6

    TopList