将VB6代码从Outlook 2007升级到Outlook 2010

| 我们想要升级我们的VB6代码以使用Outlook 2010,但出现以下错误:
Active x cannot create object
这是我们当前的代码:
Public Sub SendEmail()

  Set emailOutlookApp = CreateObject(\"Outlook.Application.12\")

  Set emailNameSpace = emailOutlookApp.GetNamespace(\"MAPI\")
  Set emailFolder = emailNameSpace.GetDefaultFolder(olFolderInbox)

  Set emailItem = emailOutlookApp.CreateItem(olMailItem)
  Set EmailRecipient = emailItem.Recipients
  EmailRecipient.Add (EmailAddress)
  EmailRecipient.Add (EmailAddress2)

  emailItem.Importance = olImportanceHigh
  emailItem.Subject = \"My Subject\"
  emailItem.Body = \"The Body\"

\'-----Send the Email-----\'
  emailItem.Save
  emailItem.Send

\'-----Clear out the memory space held by variables-----\'
  Set emailNameSpace = Nothing
  Set emailFolder = Nothing
  Set emailItem = Nothing
  Set emailOutlookApp = Nothing
Exit Sub
我不确定\“ Outlook.Application.12 \”是否正确。但是我找不到确切的答案。     
已邀请:
对于Outlook 2010,这绝对是corect
Outlook.Application.14
。 但是,我不知道Office 2007怎么办。 我认为它是3美元,而对于较低的版本,它只是\“ Outlook.Application \”。     
这是我在2010年切换到的代码:
Private Sub EmailBlahbutton_Click()

Dim mOutlookApp As Object
Dim OutMail As Object
Dim Intro As String

On Error GoTo ErrorHandler

Set mOutlookApp = GetObject(\"\", \"Outlook.application\")
Set OutMail = mOutlookApp.CreateItem(0)

With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With

\'These are the ranges being emailed.
ActiveSheet.Range(blahblahblah).Select

\'Intro is the first line of the email
Intro = \"BLAHBLAHBLHA\"

\'Set the To and Subject lines.  Send the message.
With OutMail
    .To = \"blahblah@blah.com\"
    .Subject = \"More BLAH here\"
    .HTMLBody = Intro & RangetoHTML(Selection)
    .Send
End With

With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With

ActiveSheet.Range(\"A1\").Select
ActiveWindow.ScrollColumn = ActiveCell.Column
ActiveWindow.ScrollRow = ActiveCell.Row

Set OutMail = Nothing
Set mOutlookApp = Nothing

Exit Sub

ErrorHandler:
    Set mOutlookApp = CreateObject(\"Outlook.application\")
    Resume Next

End Sub

Function RangetoHTML(rng As Range)
\' Changed by Ron de Bruin 28-Oct-2006
\' Working in Office 2000-2010
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook

TempFile = Environ$(\"temp\") & \"/\" & Format(Now, \"dd-mm-yy h-mm-ss\") & \".htm\"

\'Copy the range and create a new workbook to past the data in
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
  .Cells(1).PasteSpecial Paste:=8
  .Cells(1).PasteSpecial xlPasteValues, , False, False
  .Cells(1).PasteSpecial xlPasteFormats, , False, False
  .Cells(1).Select
  Application.CutCopyMode = False
  On Error Resume Next
  .DrawingObjects.Visible = True
  .DrawingObjects.Delete
  On Error GoTo 0
End With

\'Publish the sheet to a htm file
With TempWB.PublishObjects.Add( _
  SourceType:=xlSourceRange, _
  Filename:=TempFile, _
  Sheet:=TempWB.Sheets(1).Name, _
  Source:=TempWB.Sheets(1).UsedRange.address, _
  HtmlType:=xlHtmlStatic)
  .Publish (True)
End With

\'Read all data from the htm file into RangetoHTML
Set fso = CreateObject(\"Scripting.FileSystemObject\")
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, \"align=center x:publishsource=\", _
                      \"align=left x:publishsource=\")

\'Close TempWB
TempWB.Close savechanges:=False

\'Delete the htm file we used in this function
Kill TempFile

Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing

End Function
    
为什么要明确指定版本?为什么不简单 设置emailOutlookApp = CreateObject(\“ Outlook.Application \”)     
尝试
\"Outlook.Application.14\"
。但不确定是否与此相关:2007年到2010年的升级问题 我意识到这不是确切的问题,但是它可能会带您走上正确的道路。     

要回复问题请先登录注册