Как скопировать текст электронной почты Outlook и вставить в Excel с помощью Access VBA?

#excel #vba #ms-access #outlook #ms-word

#excel #vba #ms-access #outlook #ms-word

Вопрос:

Я хочу перенести данные из сообщения Outlook в Access, используя Excel в качестве «посредника» для удобства ссылки на данные. Я смог скопировать из Outlook в Excel и импортировать данные из Excel в Access.

Я собираюсь обработать весь процесс из Access.

Строка кода в Outlook VBA для копирования текста электронной почты не работает в Access VBA. Я думаю, у меня проблема с переменной dim или set.

Ошибка

Время выполнения 287 Ошибка, определяемая приложением или объектом.

Я могу закрыть открытую электронную почту с помощью VBA из Access, поэтому я знаю, что приложения общаются друг с другом.

 Private Sub cmdNewFromEmail_Click()
    
    Dim strWhere As String
    
    Dim xl As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim filePath As String
    
    Dim objol As Outlook.Application
    Dim MyInspector As Outlook.Inspector
    Dim objItem As Outlook.MailItem
    Dim CurrentMessage As Outlook.MailItem
    
    Set xl = New Excel.Application
    
    filePath = "S:UserNanme" amp; "Excel Test File" amp; ".xlsx"
    Set xlBook = xl.Workbooks.Open(filePath)
    Set xlSheet = xlBook.Worksheets(1)
    
    'Set OL = GetObject(, "Outlook.Application")
    Set objol = New Outlook.Application
    Set MyInspector = Outlook.ActiveInspector
    Set objItem = MyInspector.CurrentItem
    
    xl.Visible = True
    'OL.Visible = True
    
    DoCmd.GoToRecord , , acNewRec

    'Setting up a new file in Access
    Me.File_Number = Nz(DMax("File_Number", "ClaimInfo1", strWhere), 0)   1
               
    Me.Invoice_Number = Me.File_Number amp; "-01"
               
    DoCmd.RunCommand acCmdSaveRecord
               
    'Binds Client Billing tab to Invoicing form when setting up new file
    Me.SubformContainer.SourceObject = "Appraisals_Subform2"

    'Sets focus on the appropriate tab.
     Forms!Invoicing_Form.TabCtlEval = 0
    
    '---------------------------------------------------------------------
    
    With objItem
        
        'Set CurrentMessage = ActiveInspector.CurrentItem
        
        ' *** This is the line causing the problem.
        ' Other things I've tried are commented out.***
        Set CurrentMessage = MyInspector.WordEditor.Range.FormattedText.Copy    

        'Set CurrentMessage = MyInspector
        'CurrentMessage.GetInspector().WordEditor.Range.FormattedText.Copy
        'CurrentMessage.Close olSave
        'CurrentMessage.GetInspector().WordEditor.Range.FormattedText
        'CurrentMessage.Copy
          
    End With
    '---------------------------------------------------------------------
    With xlSheet
        
        .Range("A1").Select
        .Paste
        
        .Range("F5").Value = "Claim:  "
        .Range("G5").Formula = "=INDEX(B1:B100,MATCH(F5,A1:A100,0))"
                    
    End With
    
    Me.Claim_Number = Range("G5")
        
End Sub 
 

Комментарии:

1. Какая строка выдает ошибку?

2. @june7 тот, который ОП пометил как «это строка, вызывающая проблему »

3. Эта строка ссылается на множество объектов. Я бы предложил разбить его, уменьшив масштаб и назначив каждый слой по очереди, чтобы увидеть, где он прерывается

4. @chrisneilsen Я ценю предложение. Это звучит достаточно разумно, но я не совсем уверен, как это сделать. Строка была построена с помощью intellisense. Возможно, я мог бы использовать Myrange как диапазон и FormattedText как строку, но что мне делать с WordEditor? И как бы я тогда собрал их все вместе?

5. Вы пытаетесь назначить метод ( Copy ) объектной переменной. Просто удалите Set CurrentMessage =