(1004) ошибка, определенная приложением или объектом

я получил

(1004) application defined or object defined error

при попытке экспортировать отправителя и тему электронной почты из Outlook в Excel.

Sub GetFolderStats()
10 On Error GoTo Err

11    Dim objOutlook As Object
12    Dim objnSpace As Object
13    Dim objRootFolder As Object
14    Dim objInbox As Object
15    Dim mailSel As Outlook.Selection
16    Dim senderVal As String, titleVal As String

17    Dim path As String
18    Dim objExcel As Object
19    Dim objWorkbook As Object
20    Dim objSheet As Object

22    path = "example.xlsx"
23    Set objExcel = CreateObject("Excel.Application")
24    Set objWorkbook = objExcel.Workbooks.Open(path)
25    Set objSheet = objWorkbook.Sheets("Sheet1")

26    Set objOutlook = CreateObject("Outlook.Application")
27    Set objnSpace = objOutlook.GetNamespace("MAPI")
28    Set objRootFolder = objnSpace.Folders("RootFolder")
29    Set objInbox = objRootFolder.Folders("Inbox")

30    For Each Folder In objInbox.Folders
31        For Each i In Folder.Items
32            If (i.UnRead) Then
33                senderVal = i.SenderEmailAddress
34                titleVal = i.Subject
35                MsgBox senderVal + " " + titleVal
37                    NextEmptyRow = objSheet.Range("A" & objExcel.Rows.Count).End(xlUp).Row + 1
38                    objSheet.Range("A" & NextEmptyRow) = senderVal
39                    objSheet.Range("B" & NextEmptyRow) = titleVal
51              objWorkbook.Save
41          End If
42        Next
43    Next

Err:
140  MsgBox "Value: " & dblRnd & vbCrLf & _
            "Error Line: " & Erl & vbCrLf & _
            "Error: (" & Err.Number & ") " & Err.Description, vbCritical
            objWorkbook.Close
    Stop

End Sub

Строка 37 дает мне ошибку. Я пробовал sheet.activate, sheet.select не работал. Также я попробовал несколько решений, которые нашел в Интернете, ни одно из них не сработало.

Определенно objExcel.Rows.Count ошибочен, как сказал вам @Jeeped в своем ответе. objExcel - это Excel.Application, и он ничего не знает о Rows. Только Worksheet знает свой Rows. Но где работает этот код? Если нет в Excel, то, возможно, Перечисление XlDirection неизвестен. Попробуйте NextEmptyRow = objSheet.Range("A" & objSheet.Rows.Count).End(-4162).Row + 1.

Axel Richter 13.09.2018 08:57

Я поставил -4162 вместо xlUp, и все заработало. Спасибо. Использование objSheet.Rows.Count с xlUp дало тот же результат.

bilig james 13.09.2018 09:09
objExcel.Rows.Count вернет количество строк в ActiveSheet. Это не удается, если ActiveSheet не является Worksheet. Так что вам действительно стоит использовать objSheet.Rows.Count.
Axel Richter 13.09.2018 09:51
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
3
106
1

Ответы 1

Не могли бы вы сослаться на это решение ниже:

Const xlExcel7 = 39

Set objFso = CreateObject("Scripting.FileSystemObject") 
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = true

strPathExcel = "C:\Scripts\"
strFile = "DesktopLocation"
strYear = Right(Year(Date),2)
strDay = Day(Date)
strMonth = Month(Date)

strSaveFile = strPathExcel & strFile & "-" & strYear & _
  "-" & strMonth & "-" & strDay & ".xls"

If objFso.FileExists(strSaveFile) Then
  Set objWorkbook = objExcel.Workbooks.Open(strSaveFile)
Else
  Set objWorkbook = objExcel.Workbooks.Add
  objWorkbook.Sheets(1).Name = "Default"
  objWorkbook.Sheets(2).Name = "Locked Down"
  objWorkbook.Sheets(3).Name = "Other"
  objWorkbook.SaveAs strSaveFile, xlExcel7
End If

arrSample = Array("a, b, c, d")

OutputExcel "Default", arrSample, objWorkbook.Sheets("Default")
OutputExcel "Locked Down", arrSample, objWorkbook.Sheets("Locked Down")
OutputExcel "Other", arrSample, objWorkbook.Sheets("Other")

objWorkbook.Save
objWorkbook.Close
objExcel.Quit



Sub OutputExcel(ByVal location, ByVal strArray, ByRef objSheet)

  ' Add data to the sheet
  objSheet.Cells(1, 1) = location & now
  ' Save the workbook
  objSheet.Parent.Save

End Sub

Для получения дополнительной информации см.

Добавление дополнительных строк в электронную таблицу Excel с помощью VBscript

Другие вопросы по теме