MyTetra Share
Делитесь знаниями!
Outlook - это приложения с одним экземпляром, нет необходимости определять, открыт ли Outlook, потому что вы может работать только одна копия Outlook
Время создания: 31.07.2019 23:31
Раздел: !Закладки - VBA - Outlook
Запись: xintrea/mytetra_db_adgaver_new/master/base/1532202968tuhbk585yj/text.html на raw.githubusercontent.com

Я знаю, что на этот вопрос был дан ответ, но я подумал, что добавлю такие приложения, как Outlook (и я считаю, что PowerPoint также) - это приложения с одним экземпляром, нет необходимости определять, открыт ли Outlook, потому что вы может работать только одна копия Outlook.

http://msdn.microsoft.com/en-us/library/aa164542(v=office.10).aspx

Если вам нужно создать экземпляр Outlook, просто используйте CreateObject для создания экземпляра; если Outlook уже запущен, ссылка на объект укажет на существующий экземпляр. Если нет, вы создадите класс. Переплет (поздний или ранний) не имеет значения.

Например, предположим, что Outlook не запущен. Мы можем использовать этот код для создания экземпляра:

Sub testOutlook()


Dim olApp As Object ' Outlook.Application


Set olApp = CreateObject("Outlook.Application")

MsgBox (olApp2 Is Nothing)


End Sub



Это будет печатать "False" , потому что мы создали экземпляр.

Предположим, что Outlook работает. Мы можем использовать этот код, чтобы убедиться, что использование GetObject и CreateObject будет ссылаться на существующий экземпляр:

Sub testOutlook()


Dim olApp As Object ' Outlook.Application

Dim olApp2 As Object ' Outlook.Application


Set olApp = GetObject(, "Outlook.Application")

MsgBox (olApp Is Nothing)


Set olApp2 = CreateObject("Outlook.Application")

MsgBox (olApp2 Is Nothing)

MsgBox "Same object? " & (olApp Is olApp2)


End Sub



Это напечатает "False" (существующий экземпляр), "False" (наш предполагаемый "новый экземпляр" ), но последнее поле сообщения "True", потому что новый экземпляр на самом деле тот же объект, что и существующий экземпляр.

Итак, что нам делать, если мы не знаем, работает ли Outlook или нет? Как показано выше, CreateObject либо создал новый экземпляр (если он не существовал, как в первом примере), либо подключил существующий экземпляр, если Outlook был уже открыт (как во втором примере).

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования