Где ошибка?

Программирование на Visual Basic for Applications
Marill
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2004 (Вт) 6:09
Откуда: Иркутск

Где ошибка?

Сообщение Marill » 15.01.2005 (Сб) 4:38

Есть код в Access:
[Private Sub Кнопка4_Click()
On Error GoTo Err_Кнопка4_Click

Dim XLApp As Excel.Application
Dim wb As Excel.Workbook
Dim ws As Excel.Worksheet

DoCmd.OutputTo acOutputQuery, "Запрос1", acFormatXLS, "c:\temp\Печать.xls", True

Set XLApp = GetObject(, "Excel.Application")
Set wb = XLApp.Workbooks("Печать.xls")
Set ws = wb.Worksheets.Add
ws.Name = "Красивый"
ws.Range("a1").Value = wb.Sheets("Запрос1").Range("a2").Value

Exit_Кнопка4_Click:
Exit Sub

End Sub]

В пошаговом режиме все работает чудесно.
При нажатии кнопки в форме Access на строке Set XLApp = GetObject(, "Excel.Application") выдается ошибка: ActiveX component can't create object.
Что делать?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.01.2005 (Сб) 5:07

Excel к этому моменту запущен?
Если GetObject не может найти запущенный экземпляр Excel, то она возвращает эту ошибку.
Изображение

SergeySV2
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.01.2005 (Чт) 22:06

Сообщение SergeySV2 » 15.01.2005 (Сб) 16:32

Не путай два разных варианта вызова:

Set XLApp = GetObject(, "Excel.Application") - подсоединяется к запущенному экземпляру Excel иначе возвращает ошибку

Set XLApp = GetObject("", "Excel.Application") - подсоединяется к запущенному экземпляру Excel иначе запускает сам Excel и подсоединяется к нему

Marill
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2004 (Вт) 6:09
Откуда: Иркутск

Сообщение Marill » 17.01.2005 (Пн) 7:39

Так ведь строка
DoCmd.OutputTo acOutputQuery, "Запрос1", acFormatXLS, "c:\temp\Печать.xls", True
и запускает Excel.
Ошибки быть не должно.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.01.2005 (Пн) 10:10

Ага. Она запускает его, отрабатывает экспорт и закрывает потом.
I don't understand. Sorry.

SergeySV2
Новичок
Новичок
 
Сообщения: 33
Зарегистрирован: 06.01.2005 (Чт) 22:06

Сообщение SergeySV2 » 17.01.2005 (Пн) 10:16

А ты проверял?

Например, у тебя файл может уже существовать, и тогда DoCmd может отказаться производить слияние

Marill
Начинающий
Начинающий
 
Сообщения: 8
Зарегистрирован: 30.11.2004 (Вт) 6:09
Откуда: Иркутск

Ошибка нашлась.

Сообщение Marill » 18.01.2005 (Вт) 7:31

Всем спасибо!
Нужно было применять GetObject к переменной определенной, как Workbook, а не как Application, как в моем случае, и сразу указывать имя созданного с помощью DoCmd файла.


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64

    TopList