Excel 全局对象的方法(所有内容)失败

Excel 全局对象的方法(所有内容)失败,excel,vba,outlook,Excel,Vba,Outlook,我有一个宏,它接收电子邮件的正文,将其拆分成一个数组,并将其放入excel。然后使用冒号将行拆分为[label]和[data] 由于某种原因,它停止了工作。我得到了一些很好的帮助,但现在在第二个子例程中失败了,我无法解决这个错误。我相信这很简单,可能与从outlook运行或范围定义不正确有关。所有使用行、单元格、范围对象等的操作都会产生此错误 确切的错误是运行时1004错误。全局对象的方法[单元格,行]失败 我已经用一条评论指出了问题的起点: Private oXLApp As Object,

我有一个宏,它接收电子邮件的正文,将其拆分成一个数组,并将其放入excel。然后使用冒号将行拆分为[label]和[data]

由于某种原因,它停止了工作。我得到了一些很好的帮助,但现在在第二个子例程中失败了,我无法解决这个错误。我相信这很简单,可能与从outlook运行或范围定义不正确有关。所有使用行、单元格、范围对象等的操作都会产生此错误

确切的错误是运行时1004错误。全局对象的方法[单元格,行]失败

我已经用一条评论指出了问题的起点:

Private oXLApp As Object, oXLWb As Object, oXLWs As Object
Sub Thermo_to_excel()
    Dim myOlApp As Object, mynamespace As Object
    Dim ThermoMail As Object
    Dim msgText, delimtedMessage, Delim1 As String



    Set myOlApp = Outlook.Application
    Set mynamespace = myOlApp.GetNamespace("mapi")
    Set ThermoMail = Application.ActiveInspector.CurrentItem

    delimtedMessage = ThermoMail.Body

    '~~> Establish an EXCEL application object
    On Error Resume Next
    Set oXLApp = GetObject(, "Excel.Application")

    '~~> If not found then create new instance
    If Err.Number <> 0 Then
        Set oXLApp = CreateObject("Excel.Application")
    End If
    Err.Clear
    On Error GoTo 0

    Set oXLWb = oXLApp.Workbooks.Add
    Set oXLWs = oXLWb.Sheets("Sheet1")

    'Truncated [Array definition goes here]

    With oXLWs
        .Range(.Cells(1, 1), .Cells(lastRow, 1)).Value = _
        oXLApp.WorksheetFunction.Transpose(messageArray)
    End With

    Call splitAtColons
    ThermoMail.Close (olDiscard)
End Sub

Sub splitAtColons()

Dim Roows As Integer
'PROBLEMS start here now
Roows = Cells(oXLWs.Rows.Count & "," & oXLWs.ActiveCell.Column).End(xlUp).Row 

Range("A1").Select
Range("A1:B" & Roows).Font.Name = Range("B1").Font.Name
Range("A1:B" & Roows).NumberFormat = "@"



'Application.ScreenUpdating = False
Do Until Z = Roows

If Not InStr(ActiveCell.Value, ":") = 0 Then
    Cells(ActiveCell.Row, 2).Value = Trim(Mid(ActiveCell.Value, InStr(ActiveCell.Value, ":") + 1))
    ActiveCell.Value = Left(ActiveCell.Value, InStr(ActiveCell.Value, ":"))
Else
    Cells(ActiveCell.Row, 2).Value = Trim(ActiveCell.Value)
    ActiveCell.Value = ""
End If
If ActiveCell.Value = "" And Range("B" & ActiveCell.Row).Value = "" Then
ActiveCell.EntireRow.Delete
Roows = Roows - 1
Z = Z - 1
End If


    Range("A" & Z + 2).Select
    Z = Z + 1
Loop
Columns("B:B").EntireColumn.AutoFit
Columns("A:A").EntireColumn.AutoFit
'Application.ScreenUpdating = True
End Sub

我认为您的问题在于没有完全定义范围、单元格和列函数。尝试添加oxlw。在每个函数之前,或者添加一个With-oXLWs行并添加。在每个函数之前,查看发生了什么


如果在Excel中运行此操作,则范围、单元格和列函数将起作用,因为它们将引用活动工作表。如果通过Outlook运行此操作,如果工作表未处于活动状态,它可能无法工作。

是否失败?你能详细解释一下到底是什么失败了吗?对不起,我应该说得更清楚些。请看我的编辑。你仍然可以;哪一行抛出错误?Roows=CellsoXLWs.Rows.Count&、&oXLWs.ActiveCell.Column.EndxlUp.row查看其计算结果…并与您希望的计算结果进行比较。