无法获取Excel以生成电子邮件

无法获取Excel以生成电子邮件,excel,vba,email,outlook,Excel,Vba,Email,Outlook,当我运行宏创建电子邮件时,它会在我检查库的第一步停止,并且MS Office和MS Outlook都已检查 有代码 Dim OutApp As Outlook.Application Dim OutlookApp As Object Set OutlookApp = CreateObject("Outlook.Application") 我收到用户定义类型未定义的错误 并带有代码 Dim OutApp As Outlook.Application Dim OutlookApp As O

当我运行宏创建电子邮件时,它会在我检查库的第一步停止,并且MS Office和MS Outlook都已检查

有代码

Dim OutApp As Outlook.Application 
Dim OutlookApp As Object
Set OutlookApp = CreateObject("Outlook.Application")
我收到用户定义类型未定义的错误

并带有代码

Dim OutApp As Outlook.Application 
Dim OutlookApp As Object
Set OutlookApp = CreateObject("Outlook.Application")
我收到

active x无法创建该对象


我曾尝试以管理员身份运行outlook,但在outlook关闭和打开的情况下,仍然无法让它创建邮件。以下是两个可行的解决方案:

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long


Dim Email As String, Subj As String
Dim answer As Integer
Dim Msg As String, body As String, URL As String
Dim OutApp As Object, OutMail As Object

 Set OutApp = CreateObject("Outlook.Application")
 Set OutMail = OutApp.CreateItem(0)

 On Error Resume Next
     With OutMail
         .To = Email
         .CC = vbNullString
         .BCC = vbNullString
         .Subject = Subj
         .body = body
         .Display
     End With
 On Error GoTo 0
Public Sub UsingEarlyBinding()

'A reference to the Microsoft Outlook XX Object Library is
'necessary to run this code (as mentioned by @gizlmeier)

Dim OutlookApp As Outlook.Application
Dim objEmail As Object

Set OutlookApp = New Outlook.Application
Set objEmail = OutlookApp.CreateItem(olMailItem)
objEmail.Display

End Sub

使用第一种解决方案的优点是,您可以在VBE(编写代码时)中看到一个下拉菜单,为您提供自动完成功能。这是因为VBE可以识别(带有引用)Outlook库,并且可以从该库提供自动完成。例如:


以下是两种可行的解决方案:

Public Sub UsingEarlyBinding()

'A reference to the Microsoft Outlook XX Object Library is
'necessary to run this code (as mentioned by @gizlmeier)

Dim OutlookApp As Outlook.Application
Dim objEmail As Object

Set OutlookApp = New Outlook.Application
Set objEmail = OutlookApp.CreateItem(olMailItem)
objEmail.Display

End Sub

使用第一种解决方案的优点是,您可以在VBE(编写代码时)中看到一个下拉菜单,为您提供自动完成功能。这是因为VBE可以识别(带有引用)Outlook库,并且可以从该库提供自动完成。例如:


是否已设置对“Microsoft Outlook XX对象库”的引用?是否已选中对“Microsoft Outlook 15.0对象库”的引用?是否已设置对“Microsoft Outlook XX对象库”的引用?是否已选中对“Microsoft Outlook 15.0对象库”的引用?是否仍收到“错误429 activex无法创建对象”由于上述代码中不涉及任何ActiveX元素的创建,我假设您可能有一些加载项正在运行,以执行一些额外的操作或阻止某些操作。禁用所有加载项(在Outlook和Excel中)并关闭/重新打开所有MS Office应用程序后,请尝试运行上述代码。仍然收到“错误429 activex无法创建对象”由于上述代码中不涉及任何ActiveX元素的创建,我假设您可能有一些加载项正在运行,以执行一些额外的操作或阻止某些操作。禁用所有加载项(在Outlook和Excel中)并关闭/重新打开所有MS Office应用程序后,请尝试运行上述代码。