Ошибка «выход за пределы диапазона» при попытке вставить / отобразить вывод массива - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть база данных .mdb, и я запрашиваю ее в своем макросе.Я помещаю результаты запроса в массив.Я хочу показать их в своем теле Outlook, но выдает ошибку:

индекс вне диапазона

Public Sub sendNotifForm4()

Dim userArray() As Variant
Dim i As Integer
Dim x As Integer



        Dim objOutlook As Object
        Dim objOutlookMsg As Outlook.MailItem
        Dim objOutlookRecip As Outlook.Recipient

            Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = OpenDatabase("C:/Users/FTK1187/Desktop/eArchiveMaster.mdb", False, False, ";")

    Set rs = db.OpenRecordset(Name:="SELECT userName FROM userTable WHERE flag = 'NO'")
        rs.MoveFirst
        Do While Not rs.EOF

            userArray = rs.GetRows
            rs.MoveNext
        Loop
    rs.Close
    Set rs = Nothing

    db.Close
    Set db = Nothing

    x = (UBound(userArray, 1) - LBound(userArray, 1) + 1)

        'On Error Resume Next

           Set objOutlook = GetObject(, "Outlook.Application") ' Determine if Outlook is open
           If Err <> 0 Then 'If Not open it
              Call Shell(SysCmd(acSysCmdAccessDir) & "OUTLOOK.EXE")
           End If

        Set objOutlook = CreateObject("Outlook.Application")
        Set objOutlookMsg = objOutlook.CreateItem(olMailItem)

            objOutlookMsg.Subject = " E - Archiving User Account Approvements "
            objOutlookMsg.Body = objOutlookMsg.Body & "Dear Admin," & _
                                    vbNewLine & vbNewLine & "Please approve this user accounts" & _
                                    vbNewLine & vbNewLine
                     For i = 0 To UBound(userArray)
                            objOutlookMsg.Body = objOutlookMsg.Body & "User Name:"
                            objOutlookMsg.Body = objOutlookMsg.Body & userArray(i)
                            objOutlookMsg.Body = objOutlookMsg.Body & "Approval : NO"

                     Next i
                            objOutlookMsg.Body = objOutlookMsg.Body & vbNewLine & vbNewLine & "Best Regards"

'admin table loop here:

               Set objOutlookRecip = objOutlookMsg.Recipients.Add("Mustafa.Demir@pw.utc.com") '
objOutlookRecip.Type = olTo

'Call sendMail(objOutlookMsg, objOutlookRecip, "Repair Engineering", olTo)

            objOutlookMsg.Send

            Set objOutlookMsg = Nothing
            Set objOutlook = Nothing


End Sub

Я пытался использовать objOutlookMsg.HTMLBody,но я не могу запустить его правильно.Можете ли вы помочь мне решить эту проблему?

1 Ответ

1 голос
/ 09 апреля 2019
.getrows 

'Функция .getRows возвращает двумерный массив (0,0),' попробуйте использовать инспектор переменных, чтобы увидеть, что происходит с массивом UserArray

For i = 0 To UBound(userArray)
       objOutlookMsg.Body = objOutlookMsg.Body & "User Name:"
       objOutlookMsg.Body = objOutlookMsg.Body & userArray(0, i)
       objOutlookMsg.Body = objOutlookMsg.Body & "Approval : NO"
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...