GetObject не работает

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
ShiZ
Сообщения: 2
Зарегистрирован: 02 авг 2005, 10:25

люди помогите, пожалуйста.
есть приложение MS Access
в нем выполняются какие-то действия, и потом печатается отчет в Excel.
для того что бы открыть Excel используется функция GetObject.
так вот. проблема в том, что на одном компе функция отказалась работать.
то есть после выполнения строки
Set <переменная> = GetObject("путь")
и нажатии Shift + F9 на <переменная> дается значение Nothing.
и Excel не открывается
при этом руками файл открывается, на остальных компах работает.
офис переставляли.
версия 2003.
что с ней сделать?
ShiZ
Сообщения: 2
Зарегистрирован: 02 авг 2005, 10:25

извините, соврал. тот же глюк появился выше, на строчке
Set MyXl = GetObject(, "Excel.Application")
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

для того что бы открыть Excel используется функция GetObject
Напрасно. Она не может для этого использоваться!
Цитата:
' Getobject function called without the first argument returns a
' reference to an instance of the application. If the application isn't
' running, an error occurs.
Set MyXL = Getobject(, "Excel.Application")
If Err.Number <> 0 Then ExcelWasNotRunning = True
Err.Clear ' Clear Err object in case error occurred.
Она возвращает ссылку на инстанс екселя, если он запущен.

Чтобы запустить эксель лучше через меню Tools/References добавить в проект использование Microsoft Excel и написать

Код: Выделить всё

Sub qwe()
  Dim xl As New Excel.Application
  With xl
    '.Visible = True
    .Workbooks.Add
    .Cells(1, 1).Value = "=2*(123+432)"
    MsgBox .Cells(1, 1).Text
  End With
  Set xl = Nothing
End Sub

Set <переменная> = GetObject("путь")
Вот это совсем другое дело. Так обязательно должен запускаться (если не запущен).
Если не запускается, то в соответстви с цитатой из справки (см выше) проанализируйте Err.Number и выясните причину.
Ответить