2016-09-15 12 views
1

전자 메일을 처리하여 Excel에 붙여 넣은 Outlook 매크로가 있고 이후 처리를 위해 Excel 매크로를 호출합니다. 별도로 호출 할 때 두 매크로는 예상대로 작동합니다. 그러나 Outlook 매크로에서 Excel 매크로를 호출하려고하면 전자 메일 아니요 Excel 통합 문서에 붙여 넣은 다음 Excel 매크로를 호출 할 때 데이터가 없기 때문에 오류가 발생합니다.Outlook VBA Excel 매크로 호출

xlApp.Run ("PERSONAL.XLSB!Commissions_Report_Format") 

가 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 
+1

코드에서 절전 모드를 사용하고있는 것을 확인합니다. 전자 메일을 붙여 넣을 수있을만큼 충분히 잠자고 있습니까? – user2676140

+0

확인 - 수정 사항이 아닌 것 같습니다. 이 코드는 간헐적 인 런타임 91 오류가 발생합니다. 때로는 코드가 제대로 작동하지 않는 경우도 있습니다. 이견있는 사람? – battery514

+0

질문에 xlsb 코드를 추가 할 수 있습니까? – 0m3r

답변

1

xlPasteValues은 클립 보드에서 서식이 지정된 텍스트를 사용하려는 경우 사용할 수 없습니다. 대신 다음을 사용하십시오 :

Selection.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon:=False 

참고 :이 내용은 일반 텍스트로 붙여 넣습니다. 형식을 지정해야하는 경우 으로 Format 매개 변수를 변경할 수 있습니다.

3

user2676140 님의 제안. 나는 수면 시간을 15 초로 바꾸었다. 그리고 그것은 그 트릭을 완료했다. 감사!