【问题标题】:Sending Data from Word Into Excel: Run-time error: '424' Object Required将数据从 Word 发送到 Excel:运行时错误:需要“424”对象
【发布时间】:2020-01-28 13:30:23
【问题描述】:

我正在尝试在发送电子邮件后将数据从 Word 发送到 Excel。我有电子邮件,其余的工作正常。现在,我正在尝试让 Excel 工作。

Private Sub btnGenerateEmail_Click()
    'Instatiate Application Objects (using late binding)
    Dim App As Object
    Dim Msg As Object
    Const olMailItem As Long = 0

    'Declare Form Variables
    Dim EmplName As String: EmplName = Me.frmEmployeeName
    Dim IncidentDesc As String: IncidentDesc = Me.frmIncidentDescription
    Dim EmplTrain As String: EmplTrain = Me.frmEmployeeTraining
    Dim FaceOnRack As String: FaceOnRack = Me.frmFaceOnRack
    Dim DrawingProb As String: DrawingProb = Me.frmDrawingProblem
    Dim JobNum As String: JobNum = Me.frmJobNumber
    Dim DrwNum As String: DrwNum = Me.frmDrawingNumber
    Dim FaceDesc As String: FaceDesc = Me.frmFaceDescription
    Dim Qty As String: Qty = Me.frmQty
    Dim StockOrNon As String: StockOrNon = Me.frmStockOrNon
    Dim FaceReplace As String: FaceReplace = Me.frmFaceReplace

    'Set Application Objects (using late binding)
    Set App = CreateObject("Outlook.Application")
    Set Msg = App.CreateItem(olMailItem)

    'Data validation
    If IsNull(EmplName) Or EmplName = "" Then
        MsgBox ("Please enter the employee's name."), vbCritical
        Exit Sub
    End If
    If IsNull(IncidentDesc) Or IncidentDesc = "" Then
        MsgBox ("Please describe how the face was broken."), vbCritical
        Exit Sub
    End If
    If IsNull(EmplTrain) Or EmplTrain = "" Then
        MsgBox ("Does the employee need more training to avoid these kind of incidents in the future?"), vbCritical
        Exit Sub
    End If
    If IsNull(FaceOnRack) Or FaceOnRack = "" Then
        MsgBox ("Was the already broken when on rack?"), vbCritical
        Exit Sub
    End If
    If IsNull(DrawingProb) Or DrawingProb = "" Then
        MsgBox ("Was the face scrapped because of an issue with the drawing/art?"), vbCritical
        Exit Sub
    End If
    If IsNull(JobNum) Or JobNum = "" Then
        MsgBox ("Please enter the job number or traveler number."), vbCritical
        Exit Sub
    End If
    If IsNull(DrwNum) Or DrwNum = "" Then
        MsgBox ("Please enter the drawing number."), vbCritical
        Exit Sub
    End If
    If IsNull(FaceDesc) Or FaceDesc = "" Then
        MsgBox ("Please enter a description of the face being scrapped."), vbCritical
        Exit Sub
    End If
    If IsNull(Qty) Or Qty = "" Then
        MsgBox ("Please enter the quantity being scrapped."), vbCritical
        Exit Sub
    End If
    If IsNull(StockOrNon) Or StockOrNon = "" Then
        MsgBox ("Is the face stock or non-stock?"), vbCritical
        Exit Sub
    End If
    If IsNull(FaceReplace) Or FaceReplace = "" Then
        MsgBox ("Does this face need to be replaced?"), vbCritical
        Exit Sub
    End If

    'Compose HTML Message Body
    Dim HTMLContent As String
    HTMLContent = "<p style='font-family:Calibri; font-size:14px;'>This email is an autogenerated scrap face incident report.</p>" _
                & "<table style='font-family:Calibri; font-size:14px;' width='75%' border='1' bordercolor='black' cellpadding='5'>" _
                    & "<tr><td width='65%'>Employee Name</td><td>" & EmplName & "</td></tr>" _
                    & "<tr><td>How was the face broken?</td><td>" & IncidentDesc & "</td></tr>" _
                    & "<tr><td>Does employee in question need more training to prevent future incidents?</td><td>" & EmplTrain & "</td></tr>" _
                    & "<tr><td>Was the face found on the rack already broken?</td><td>" & FaceOnRack & "</td></tr>" _
                    & "<tr><td>Was the face scrapped because of an issue with the drawing/art?</td><td>" & DrawingProb & "</td></tr>" _
                    & "<tr><td>Job/Traveler Number:</td><td>" & JobNum & "</td></tr>" _
                    & "<tr><td>Drawing Number:</td><td>" & DrwNum & "</td></tr>" _
                    & "<tr><td>Face Description:</td><td>" & FaceDesc & "</td></tr>" _
                    & "<tr><td>Quantity</td><td>" & Qty & "</td></tr>" _
                    & "<tr><td>Stock or Non-Stock</td><td>" & StockOrNon & "</td></tr>" _
                    & "<tr><td>Does this face need to be replaced?</td><td>" & FaceReplace & "</td></tr>" _
                & "</table>"

    'Construct the email, pass parameter values, & send the email
    With Msg
        .To = "test@test.com"      
        .Subject = "Scrap Face Incident Report"
        .HTMLBody = HTMLContent
        .Display
        '.Send
    End With

'MAY NEED WORK
    'Make sure the generated email is the active window
    App.ActiveWindow.WindowState = olMaximized
    'Application.Windows("Scrap Face Incident Report - Message (HTML)").Activate

    'Create entry in scrap report
    Dim ScrapReportFile As String
    ScrapReportFile = "\\jacksonville-dc\common\SOP's for JV\WIP\Jonathan\JG - How to Replace Scrapped Faces\Scrap List (Faces).xlsx"


    'File exists
    If Dir(ScrapReportFile) <> "" Then

        Dim ObjExcel As Object, ObjWb As Object, ObjWorksheet As Object

        Set ObjExcel = CreateObject("EXCEL.APPLICATION")

        Set ObjWb = ObjExcel.Workbooks.Open(ScrapReportFile)
        ObjExcel.Visible = True

        With ObjWb.Worksheets(3)
            Dim lastrow As Long: lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
            MsgBox (lastrow)
        End With


        'ObjWb.Worksheets(1).Range("A1") = "SOP Title: " & SOPTitle
        'ObjWb.Worksheets(1).Range("F1") = "Date: " & Format(Now, "MM/dd/yyyy")

        'ObjWb.Save

        'ObjWb.Close
    End If
    'File does not exist; throw error

End Sub

关于这部分代码:

With ObjWb.Worksheets(3)
    Dim lastrow As Long: lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
    MsgBox (lastrow)
End With

我正在尝试发送从表单收集的数据并在工作表底部创建一个新行,然后将数据插入到指定的列中。当我执行 .Cells(.Rows.Count...etc 时,我遇到了一个错误。

运行时错误:需要“424”对象

【问题讨论】:

  • 您可能还想包含实际的错误消息。
  • 运行时错误:需要'424'对象
  • Word 不知道 xlUp 的含义 - 这是 Excel 对象模型的一部分。

标签: excel vba ms-word


【解决方案1】:

Word 不知道 xlUp 是什么,因为它来自 Excel 对象模型。

添加以下行:

Const xlUp as Long = -4162

根据xlUps对应的documentation的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多