簡體   English   中英

全局對象失敗的方法(一切)

[英]Method (everything) of object Global failed

我有一個宏,它接收電子郵件的正文,將其拆分為一個數組並將其放入excel。 然后,它使用冒號將行拆分為[label]和[data]。

由於某種原因,它已停止工作。 我在這里有一些很好的幫助但現在它在第二個子例程中失敗了,我無法回避該錯誤。 我確信這很簡單,可能與從Outlook運行或錯誤的范圍定義有關。 使用行,單元格,范圍對象等的所有操作都會出現此錯誤。

確切的錯誤是Runtime 1004 error. Method [cells, rows] of object Global failed Runtime 1004 error. Method [cells, rows] of object Global failed

我已使用注釋來標記問題開始的地方:

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

我相信您的問題是您沒有完全定義RangeCellsColumns函數。 嘗試添加oXLWs. 在每個函數之前,或添加With oXLWs行並添加. 在每個功能之前,先看看會發生什么。

如果在Excel中運行,則RangeCellsColumns函數將起作用,因為它們將引用活動的工作表。 如果您通過Outlook運行此功能,則如果工作表處於非活動狀態,則可能無法正常工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM