Отчеты в Экселе

Тема в разделе "Visual Basic", создана пользователем Normann, 21 окт 2007.

  1. Normann

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Тема такая: у меня есть переменная типа Excel.Application
    При создании отчета ее нужно инициализировать новым выделением памяти, иначе после закрытия приложеня Excel созданного этой переменной нельзя будет ей воспользоваться. Получается что на каждый отчет приходится создавать отдельное приложение. Как выйти из этой не экономичной ситуации?
     
  2. Tanya

    Tanya Гость

    Код (Text):
    Dim Exc As Excel.Application
    On Error Resume Next
    [b]Set Exc = GetObject("", "Excel.Application")[/b]
    If Err Then
    Err.Clear
    [b]Set Exc = CreateObject("Excel.Application")[/b]
    'или [b]Set Exc = New Excel.Application[/b]
    Exc.Visible = True
    If Err Then
    MsgBox "Не удалось открыть Excel" & vbCrLf & _
    Err.Description
    Err.Clear
    End If
    Else
    Exc.Visible = True
    End If
    On Error GoTo 0
     
  3. Normann

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Болшое спасибо, но я надеялся увидеть решение без прибегания к On Error. Может быть есть такое решение? Может есть способ проверить существует ли (или удален) объект связанный с объектной переменной?
     
  4. Tanya

    Tanya Гость

    Возможно просто

    Код (Text):
    If Exc is Nothing Then
    'приложение не создавало Excel-объект
    'или приложением уже был закрыт такой объект
    else
    'Это приложение уже открыло Excel
    end if
    но, если в процессе работы пользователь,
    а не приложение закрывает Excel, с которым связано приложение,
    то конечно, возникнет ошибка
     
  5. Normann

    Normann Well-Known Member

    Регистрация:
    9 авг 2007
    Сообщения:
    168
    Симпатии:
    2
    Вот как раз этот is nothing мне и нужен был, большое спасибо, только я его уже в нашел в справке.
     
Загрузка...

Поделиться этой страницей