Vba 如何返回传入参数的对象的属性?

Vba 如何返回传入参数的对象的属性?,vba,outlook,Vba,Outlook,我正在尝试读取电子邮件主题并将其存储为变量 出于测试目的,我将其设置为用作文本文件的文件名 我的代码返回一个空字符串 我向电子邮件地址发送了一封电子邮件,其中ThisOutlookSession 电子邮件主题是主题(923832) 代码执行时不会出错 文本文件名为空 为什么str=oMail.Subject不能阅读任何东西 这是我的代码:(错误时继续下一步现在删除。) 使用ByVal项作为对象而不是oMail作为Outlook.MailItem 使用ByVal项作为对象而不是oMail作为Out

我正在尝试读取电子邮件主题并将其存储为变量

出于测试目的,我将其设置为用作文本文件的文件名

我的代码返回一个空字符串

  • 我向电子邮件地址发送了一封电子邮件,其中
    ThisOutlookSession
  • 电子邮件主题是主题(923832)
  • 代码执行时不会出错
  • 文本文件名为空
  • 为什么
    str=oMail.Subject
    不能阅读任何东西

    这是我的代码:(
    错误时继续下一步
    现在删除。)

    使用
    ByVal项作为对象
    而不是
    oMail作为Outlook.MailItem

    使用
    ByVal项作为对象
    而不是
    oMail作为Outlook.MailItem


    您可以
    Dim
    oMail,但从未将其设置为任何值。
    If Item.SenderEmailAddress=”username@mail.com“然后
    str=Item.Subject
    停止使用错误恢复下一步,直到您知道如何操作,这只会隐藏错误。”。到底什么是离题的?有人能描述一下吗?顺便说一句,谢谢大家!我的机器人已经启动并运行了!您可以
    Dim
    oMail,但从未将其设置为任何值。
    If Item.SenderEmailAddress=”username@mail.com“然后
    str=Item.Subject
    停止使用错误恢复下一步,直到您知道如何操作,这只会隐藏错误。”。到底什么是离题的?有人能描述一下吗?顺便说一句,谢谢大家!我的机器人已经启动并运行了!
    Option Explicit
    
    Private WithEvents olInboxItems As Items
    
    Private Sub Application_Startup()
      Dim objNS As NameSpace
      Set objNS = Application.Session
      ' instantiate objects declared WithEvents
      Set olInboxItems = objNS.GetDefaultFolder(olFolderInbox).Items
      Set objNS = Nothing
    End Sub
    
    Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
    
        'On Error Resume Next
    
        Dim oMail As Outlook.MailItem
        Dim str As String
        Dim openPos As Integer
        Dim closePos As Integer
        Dim midBit As String
        Dim strFolderPath
    
        Dim fso As Object
        Dim oFile As Object
        Set oFile = fso.CreateTextFile(strFolderPath & midBit & ".txt")
        Set fso = CreateObject("Scripting.FileSystemObject")
    
        strFolderPath = "C:\temp\Attachments\"
        str = oMail.Subject
    
        openPos = InStr(str, "(")
        closePos = InStr(str, ")")
    
        If oMail.SenderEmailAddress = "username@mail.com" Then
    
            If Item.Attachments.Count > 0 Then
    
                midBit = Mid(str, openPos + 1, closePos - openPos - 1)
    
                oFile.WriteLine midBit
                oFile.Close
    
            End If
    
        End If
    
        Set fso = Nothing
        Set oFile = Nothing
    
    End Sub
    
    Private Sub olInboxItems_ItemAdd(ByVal Item As Object)
    
        If TypeOf Item Is Outlook.MailItem Then
    
            Debug.Print Item.Subject
    
        End If
    
    
    End Sub