Создание приложения Outlook из Excel приводит к ошибке несоответствия типов - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь создать электронную почту Outlook, используя шаблон Outlook.

В строке Set obApp = Outlook.Application я получаю сообщение об ошибке:

Ошибка: 13 несоответствие типов

Кажется, я использую тот же синтаксис, который использовался в других постах на этом сайте по теме.

Я также пытался Set obApp = CreateObject("Outlook.Applciation") с тем же результатом.

У меня есть OLE Automation, библиотека объектов Microsoft Outlook 16.0, библиотека Microsoft Office 16.0 и библиотека объектов Microsoft Excel 16.0, а также Visual Basic для приложений. Все они отмечены в меню «Инструменты-> Ссылки».

Sub CreateEmailfromTemplate()
    Dim obApp As Application
    Dim NewMail As Outlook.MailItem

    Set obApp = Outlook.Application 'THE PROBLEM IS HERE
    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

1 Ответ

0 голосов
/ 11 ноября 2018

У вас есть два варианта на выбор:

Вариант 1: раннее связывание

Чтобы использовать раннее связывание, вам нужно установить ссылку на:

Microsoft Outlook ##.# Object Library

Что можно сделать в VBE> Инструменты> Ссылки. Я предполагаю, что этот метод вы предпочитаете из-за того, как вы уже объявили свои переменные.

Проблема в вашем коде, использующем этот метод, заключается в том, что в операторе Dim xxxx As Application, As Application ссылается на объектную модель Excel . Вам нужно указать, что вы хотите использовать Outlook.

Sub CreateEmailfromTemplate()

    Dim obApp As New Outlook.Application    '<-- Notice Change
    Dim NewMail As Outlook.MailItem

    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

Вариант 2: Позднее связывание

Вам не нужно устанавливать ссылку в этом методе, но типы и константы Outlook не будут доступны во время компиляции. Компилятор получит их во время выполнения.

Sub CreateEmailfromTemplate()

    Dim obApp As Object
    Dim NewMail As Object

    Set obApp = CreateObject("Outlook.Application")
    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

Обратите внимание, что в этом методе объекты Outlook были объявлены как тип Object.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...