Позднее связывание VBA для MAC - PullRequest
0 голосов
/ 12 июля 2020

Мне нужна помощь, чтобы заставить этот код vba работать в ma c (он отлично работает под windows, но у меня есть пользователи, у которых есть только ma c), код извлекает данные тела из выбранных писем в Outlook и отправляет информацию на лист.

Я попытался прочитать все сообщения здесь о позднем связывании и понял, как это работает, в основном не ссылаясь на библиотеки, которых нет в офисных версиях ma c. Я изменил строку, которая вызывает проблемы в моем коде «Dim objMail As Outlook.MailItem» на «Dim objMail As Object», который он запускает, но макрос переходит прямо в строку окна msg, ничего не выполняя (я думаю, что работает код, но я попытался отладить его, но при запуске не получил никакой переменной или какой-либо информации, и я не получил сообщение об ошибке)

Sub DetailExtraction()
On Error GoTo ErrHandler

Application.ScreenUpdating = False
' SET Outlook APPLICATION OBJECT.
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application") ' late binding

' CREATE AND SET A NameSpace OBJECT.
Dim objNSpace As Object
' THE GetNameSpace() METHOD WILL REPRESENT A SPECIFIED NAMESPACE.
Set objNSpace = objOutlook.GetNamespace("MAPI")

' CREATE A FOLDER OBJECT.
Dim myFolder As Object
Set myFolder = objNSpace.GetDefaultFolder(olFolderInbox)

Dim Item As Object
Dim iRows, iCols As Integer
iRows = 2

' LOOP THROUGH EACH ITEMS IN THE FOLDER.
'For Each objItem In myFolder.Items
' LOOP THROUGH EACH ITEMS IN THE SELECTION.
For Each objItem In ActiveExplorer.Selection
    
    If objItem.Class = olMail Then
    
        Dim objMail As Outlook.MailItem
        Set objMail = objItem

        Cells(iRows, 1) = objMail.SenderEmailAddress
        Cells(iRows, 2) = objMail.To
        Cells(iRows, 3) = objMail.Subject
        Cells(iRows, 4) = objMail.ReceivedTime
        Cells(iRows, 6) = objMail.Body
        Cells(iRows, 6).WrapText = False
        'MsgBox Prompt:=objMail.Body
   End If
    
   'WRAP UP FILE OFF
  ' Cells*i.WrapText = False
    ' SHOW OTHER PROPERTIES, IF YOU WISH.
    'Cells(iRows, 6) = objMail.Body
    'Cells(iRows, 5) = objMail.CC
    'Cells(iRows, 6) = objMail.BCC
    'Cells(iRows, 4) = objMail.Recipients(1)
    
    iRows = iRows + 1
Next
Set objMail = Nothing

' RELEASE.
Set objOutlook = Nothing
Set objNSpace = Nothing
Set myFolder = Nothing
ErrHandler:
Debug.Print Err.Description
Application.ScreenUpdating = True
MsgBox "Environments Details Extracted from the Selected Emails (" & iRows - 2 & ")"
End Sub

Заранее спасибо!

...