2014-12-30 45 views
1

我已经编写了以下模块,以在MsgBox中显示当前在Outlook中打开的电子邮件的主题。Outlook VBA,在MsgBox中显示标题

Outlook 2010.版本14.0.7140.5002。

我得到运行时错误'424'对象必需。

与调试器高亮:

Set objItem = objApp.ActiveInspector.CurrentItem 

代码如下:

Sub ShowTitle() 

    Dim objMail As Object 
    Set objItem = objApp.ActiveInspector.CurrentItem 
    Dim Title As String 
    Set objMail = objItem.Subject 

    Title = objItem 
    MsgBox (Title) 

End Sub 
+0

declare objItem我没有看到 – Sorceri

+0

你初始化了objApp变量吗? –

回答

1
Sub ShowTitle() 

Dim objMail As Object 
Set objItem = objApp.ActiveInspector.CurrentItem 

Dim Title As String 
Title = objItem.Subject 

MsgBox (Title) 

End Sub 
0

试试这个未经测试的代码。

Option Explicit 

Sub ShowTitle() 

    'Dim objApp as Outlook.Application 
    Dim objItem As Object 
    Dim Title As String 

    ' If exclusively in Outlook there is no need for objApp 
    'Set objApp = Outlook.Application 
    'Set objItem = objApp.ActiveInspector.CurrentItem 

    ' or simpler 
    'Set objItem = Application.ActiveInspector.CurrentItem 

    ' or simplest 
    Set objItem = ActiveInspector.CurrentItem 

    If objItem is mailitem then 
     Title = objItem.Subject 
     MsgBox (Title) 
    End if 

    'Set objApp = Nothing 
    Set objItem = Nothing 

End Sub 
0

黛安Poremsky了在滑尺在this article回答了这个一个很好。每她的回答,请包含此功能的一个模块:

Function GetCurrentItem() As Object 
    Dim objApp As Outlook.Application 

    Set objApp = Application 
    On Error Resume Next 
    Select Case TypeName(objApp.ActiveWindow) 
     Case "Explorer" 
      Set GetCurrentItem = objApp.ActiveExplorer.Selection.Item(1) 
     Case "Inspector" 
      Set GetCurrentItem = objApp.ActiveInspector.CurrentItem 
    End Select 

    Set objApp = Nothing 
End Function 

然后,还按她的回答,调用该函数与这条线在您的宏:

Set objItem = GetCurrentItem() 

因此,修改你的代码,我做了第二个宏这样的,这对我的作品:)在任一选定的电子邮件或打开电子邮件

Sub subjectLine() 

    Dim Title As String 

    Set objItem = GetCurrentItem() 

    Title = objItem.subject 

    MsgBox (Title) 

End Sub 

这样一来,就可以运行subjectLine(。