Ошибка времени выполнения при доступе к подпапке в общей папке «Входящие» - PullRequest
1 голос
/ 27 апреля 2020

Я нашел этот код, который может извлекать электронные письма из указанной папки в Outlook в Excel. Проблема в том, что иногда при установке подпапки выдается ошибка времени выполнения -2147352567 (80020009). Например, сегодня он дал мне ошибку, но после 7 попыток в течение одного часа (только для тестирования) это сработало. Такое поведение происходит случайно. В некоторые дни это работает первый раз, затем снова выдает ошибку на следующий день, и я должен продолжать работать до тех пор, пока она не будет работать, как сегодня.

Sub EmailStatsV3()
    Dim Item As Object
    Dim varOutput() As Variant
    Dim lngcount As Long
    Dim xlApp As Excel.Application
    Dim xlSht As Excel.Worksheet
    Dim ShareInbox As Outlook.MAPIFolder
    Dim olNs As Outlook.NameSpace
    Dim olRecip As Outlook.Recipient
    Dim SubFolder As Object

    Set olNs = Application.GetNamespace("MAPI")
    Set olRecip = olNs.CreateRecipient("abc@xyz.ca") '// Owner's Name or email address
    Set ShareInbox = olNs.GetSharedDefaultFolder(olRecip, olFolderInbox)
    Set SubFolder = ShareInbox.Folders("name").Folders("outages") 'Change this line to specify folder

    ReDim varOutput(1 To SubFolder.Items.Count, 1 To 11)

    For Each Item In SubFolder.Items
        If TypeName(Item) = "MailItem" Then
            lngcount = lngcount + 1
            varOutput(lngcount, 1) = Item.SenderEmailAddress 'Sender or SenderName
            varOutput(lngcount, 2) = Item.ReceivedTime 'stats on when received
            varOutput(lngcount, 3) = Item.ConversationTopic 'Conversation subject
            varOutput(lngcount, 4) = Item.Subject 'to split out prefix
            varOutput(lngcount, 5) = Item.Categories 'to split out category
            varOutput(lngcount, 6) = Item.Sender
            varOutput(lngcount, 7) = Item.SenderName
            varOutput(lngcount, 8) = Item.To
            varOutput(lngcount, 9) = Item.CC
            varOutput(lngcount, 10) = SubFolder.Name
            varOutput(lngcount, 11) = Item.Body



        End If
    Next

    'Creates a blank workbook in excel
    Set xlApp = New Excel.Application
    Set xlSht = xlApp.Workbooks.Add.Sheets(1)

    xlSht.Range("A1").Resize(UBound(varOutput, 1), _
                             UBound(varOutput, 2)).Value = varOutput
    xlApp.Visible = True

    Set olNs = Nothing
    Set olRecip = Nothing '// Owner's Name or email address
    Set ShareInbox = Nothing
    Set SubFolder = Nothing   'Change this line to specify folder


End Sub

Спасибо,

Редактировать: Эта ошибка во время выполнения возникает только для меня при доступе к подпапкам в общих папках по умолчанию. Обходным путем было то, что я установил папку на текущую папку, и она сделала свое дело. Для других, сталкивающихся с подобными проблемами, это то, что я изменил. Вы должны помнить, чтобы выбрать папку в первую очередь.

 Set SubFolder = Application.ActiveExplorer.CurrentFolder

1 Ответ

3 голосов
/ 27 апреля 2020

Похоже, вы запускаете код на стороне сервера, по крайней мере, код ошибки говорит об этом ... если нет, убедитесь, что сетевое соединение стабильно и у вас нет проблем, связанных с соединением.

В настоящее время Microsoft не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любых необслуживаемых неинтерактивных клиентских приложений или компонентов (включая ASP, ASP. NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или тупиковую ситуацию при запуске Office в этой среде.

Если вы создаете решение, работающее в контексте на стороне сервера, вам следует попытаться использовать компоненты, которые были сделаны безопасными для выполнения без присмотра. Или вы должны попытаться найти альтернативы, которые позволяют хотя бы части кода работать на стороне клиента. Если вы используете приложение Office из серверного решения, приложению не хватит многих необходимых возможностей для успешной работы. Кроме того, вы будете рисковать со стабильностью вашего общего решения.

Подробнее об этом читайте в статье Соображения по поводу автоматизации Office на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...