“运行时错误'9'下标超出范围"尝试从Outlook将电子邮件正文获取到Excel文件时显示 [英] "Run time error '9' Subscript out of range" shows up while trying to fetch the Email body from outlook to Excel file

查看:39
本文介绍了“运行时错误'9'下标超出范围"尝试从Outlook将电子邮件正文获取到Excel文件时显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用以下编码从Outlook将Email正文的一部分提取到Excel文件.它给我以下错误,错误代码为运行时错误'9'下标超出范围" ,如以下代码中所指定.有人可以在下面查看我的代码并为我提供帮助.谢谢

I am trying to fetch the part of the Email body from outlook to Excel file using the following coding. It is giving me error as "Run time error '9' Subscript out of range " as specified in the coding below. Would someone please review my code below and help me out. Thank you

我的代码:

Sub try()
Dim vText As Variant

Dim sText As String

Dim vItem As Variant

Dim str2 As String

Dim subject As String

Set myOlApp = Outlook.Application

Set mynamespace = myOlApp.GetNamespace("mapi")

Set myfolder = myOlApp.ActiveExplorer.CurrentFolder

Set xlobj = New Excel.Application

xlobj.Visible = True

xlobj.Workbooks.Add

xlobj.Worksheets("Sheet1").Name = "Statusmail"

xlobj.Range("A1").Value = "Caller Name"

xlobj.Range("B1").Value = "Caller Requirement"

xlobj.Range("C1").Value = "Caller Phone"

xlobj.Range("D1").Value = "Caller Company"

xlobj.Range("E1").Value = "Caller Email"

xlobj.Range("F1").Value = "Call Date & Time"

xlobj.Range("G1").Value = "Branch Info"

xlobj.Range("H1").Value = "City"

 For i = 1 To myfolder.Items.Count

  Set myItem = myfolder.Items(i)

  msgtext = myItem.Body

  sText = myItem.Body

  subject = myItem.subject

  If InStr(1, subject, "enquiry for you", vbTextCompare) Then

  vText = Split(sText, Chr(13))

    For j = UBound(vText) To 0 Step -1

      If ((InStr(1, vText(j), "Caller Name:") > 0) Or (InStr(1, vText(j), "Name :") > 0)) Then

            vItem = vText(j + 1)

            xlobj.Range("A" & i + 1).Value = Trim(vItem)

        End If
       If InStr(1, vText(j), "Caller Requirement:") > 0 Then

            vItem = vText(j + 1)

            xlobj.Range("B" & i + 1).Value = Trim(vItem)

        End If
        If ((InStr(1, vText(j), "Caller Phone:") > 0) Or (InStr(1, vText(j), "Phone :") > 0)) Then

            vItem = vText(j + 1)

            xlobj.Range("C" & i + 1).Value = Trim(vItem)

        End If
        If InStr(1, vText(j), "Caller Company:") > 0 Then

            vItem = vText(j + 1)

            xlobj.Range("D" & i + 1).Value = Trim(vItem)

        End If
        If InStr(1, vText(j), "Caller Email:") > 0 Then

            vItem = vText(j + 1)
            If Not IsEmpty(vItem) Then
            Dim str1 As String
            If InStr(1, vItem, ":") > 0 Then
            vItem = Split(vItem, Chr(58))
            str1 = vItem(1)
            End If
            vItem = Split(str1, Chr(34))
         ' BELOW LINE GIVES ERROR  
            xlobj.Range("E" & i + 1).Value = vItem(0)   ' THIS LINE IS GIVING ERROR
            End If

        End If
        If ((InStr(1, vText(j), "Call Date & Time:") > 0) Or (InStr(1, vText(j), "Call Date :") > 0)) Then

            vItem = vText(j + 1)

            xlobj.Range("F" & i + 1).Value = Trim(vItem)

        End If
        If InStr(1, vText(j), "Branch Info:") > 0 Then

            vItem = vText(j + 1)

            xlobj.Range("G" & i + 1).Value = Trim(vItem)

        End If
        If ((InStr(1, vText(j), "City:") > 0) Or (InStr(1, vText(j), "City Name :") > 0)) Then

            vItem = vText(j + 1)

            xlobj.Range("H" & i + 1).Value = Trim(vItem)

        End If
       Next
  End If

Next

End Sub

推荐答案

如果这行:

If InStr(1, vItem, ":") > 0 Then

不符合条件,则下一步将执行此行

doesn't meet criteria than this line will be executed next

vItem = Split(str1, Chr(34))

实际上试图拆分空的 str1变量.结果,您的数组为空,导致运行时错误'9'指的是下一行的右部分:

which in fact trying to split empty str1 variable. As a result your Array is empty causing Run-time error'9' referring to right part of the next line:

xlobj.Range("E" & i + 1).Value = vItem(0)  

因此, VItem(0)是您的问题,而它不存在.

So, VItem(0) is your problem while it doesn't exist.

这篇关于“运行时错误'9'下标超出范围"尝试从Outlook将电子邮件正文获取到Excel文件时显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆