【问题标题】:Microsoft Excel VBA Run Time Error 5Microsoft Excel VBA 运行时错误 5
【发布时间】:2016-12-07 18:27:23
【问题描述】:

我对 Excel VBA 很陌生。我正在开发 Outlook 自动化以从 Outlook 电子邮件正文中获取数据,生成报告并发送给团队。我刚开始尝试一些从 Outlook 电子邮件正文中获取数据并导出到 Excel 的方法。我尝试在电子邮件正文中提取特定数据以导出到 Excel 表,似乎我一直在运行 Run Time Error 5

vText = Trim(M.SubMatches(1))

例如

Sub GetData()
    Dim folders As Outlook.folders
    Dim folder As Outlook.MAPIFolder
    Dim iRow As Integer
    Dim Pst_Folder_Name As String
    Dim MailboxName As String
    Dim subFolderName As String
    Dim xlSheet As Object
    Dim Reg As Object
    Dim sText As String
    Dim vText As Variant
    Dim M As Object
    Dim M1 As Object

    MailboxName = "nms@gmail.com"

    Pst_Folder_Name = "My Folders"

    subFolderName = "HTD Ticketing System"

    Set folder = Outlook.Session.folders(MailboxName).folders(Pst_Folder_Name).folders(subFolderName)
    If folder = "" Then
        MsgBox "Invalid Data in Input"
        GoTo end_lbl1:
    End If

    Sheets(1).Activate

    For iRow = 1 To folder.Items.Count
        Sheets(1).Cells(iRow, 1).Select

        sText = folder.Items.Item(iRow).Body

        Set Reg = CreateObject("VBScript.RegExp")

        With Reg
            .Pattern = "(http.)"
        End With

        If Reg.Test(sText) Then
            Set M1 = Reg.Execute(sText)
            For Each M In M1
                vText = Trim(M.SubMatches(1))
            Next
        End If

        Sheets(1).Cells(iRow, 2) = vText

        Set M = Nothing
        Set M1 = Nothing
        Set Reg = Nothing
    Next iRow

    end_lbl1:

End Sub

谢谢

新沙

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    SubMatches 集合索引为零,因此只需更改为:

    vText = Trim(M.SubMatches(0))
    

    目前你只会得到第一场比赛,如果你想要他们所有你需要的Reg.Global = True

    【讨论】:

      猜你喜欢
      • 2018-12-01
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多