У меня есть макрос Outlook, который обрабатывает электронную почту и вставляет ее в Excel, а затем вызывает макрос Excel для дальнейшей обработки. При вызове отдельно оба макроса работают так, как ожидалось. Однако, если я попытаюсь вызвать макрос Excel из макроса Outlook, письмо будет не вставить в книгу Excel, а затем, когда вызывается макрос Excel, он генерирует ошибку, потому что данных нет. Любая идея, почемуOutlook VBA Вызов макроса Excel
xlApp.Run ("PERSONAL.XLSB!Commissions_Report_Format")
может привести к тому, что данные не будут вставляться из Outlook в Excel? Ошибка возникает только при наличии этой строки кода. Заранее спасибо!
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Option Explicit
Sub PasteToExcel(item As Outlook.MailItem)
Dim activeMailMessage As MailItem
Dim xlApp As Excel.Application
Dim Wb As Excel.Workbook
Dim Ws As Excel.Worksheet
'Get a handle on the email
Set activeMailMessage = ActiveExplorer.Selection.item(1)
'Copy the formatted text:
activeMailMessage.GetInspector().WordEditor.Range.FormattedText.Copy
'Ensure Excel Application is open
Set xlApp = CreateObject("Excel.Application")
'Make Excel Application visible
xlApp.Visible = True
'Open the Personal Macro Workbook, or the Excel macro won't run
xlApp.Workbooks.Open ("C:\Users\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.xlsb")
'Name the Excel File
Set Wb = xlApp.Workbooks.Add
'Paste the email
Set Ws = xlApp.Sheets(1)
Ws.Activate
Ws.Range("A1").Select
Sleep 3000
Selection.PasteSpecial xlPasteValues
Sleep 3000 'wait for 3 seconds
'Run the Excel macro to clean up the file
xlApp.Run ("PERSONAL.XLSB!Commissions_Report_Format")
End Sub
Я вижу, что вы используете Sleep в своем коде, вы спите достаточно долго, чтобы наклеивать электронную почту? – user2676140
Хорошо - так кажется, это не было исправление. Я получаю прерывистую ошибку времени выполнения с этим кодом. Иногда код работает нормально, иногда это не так. Есть предположения? – battery514
Можете ли вы добавить свой xlsb-код в свой вопрос? – 0m3r