2013-08-20 9 views
1
Set olMessage = olApp.CreateItem(olMailItem) 
olMessage.To = strEmailTo 
olMessage.CC = strEmailCC 
olMessage.Subject = strSubject 
olMessage.Body = strBody 
olMessage.Importance = olImportanceHigh 
olMessage.Sensitivity = olConfidential 
olMessage.Display ' Line With Error 

위의 코드 내 사용자 양식에 버튼 내부에 이상한 오류가 있습니다. 오류 메시지가 표시됩니다.아웃룩 내 사용자 정의 폼

대화 상자가 열려 있습니다. 를 닫고 나가 매크로에서 혼자 두 코드를 배치하면 잘 작동하고 새 전자 메일 등을 열어 다시

을 시도하지만 정의 폼을로드하고있는 명령 아래에 코드를 삽입하는 매크로를 설정할 때, 그것은 제공 오류 대화 상자 :

Run-time error '2147467259 (80004005)' 

A dialog box is open. Close it and try again. 

Outlook이 이미 열려 있고 매크로가 도구 모음에 있습니다.

모듈 1 (코드) 좋은

sub email() 
Load userform3 
userform3.show 
end sub 

로드 내 메뉴

+0

열린 대화 상자를 닫으려고 했습니까? o_0 응용 프로그램이 사용자로부터 응답을 기다리는 동안 매크로는 이러한 상태에서 실행할 수 없습니다. 또한 다른 응용 프로그램 (예 : Excel 등)에서이 VBA를 실행하고 있습니까? –

+0

열려있는 대화 상자가 없습니다. –

+0

Outlook에서 * 전적으로 * 실행 중입니까? 아니면 다른 응용 프로그램에서 Outlook을 자동화하고 있습니까? –

답변

2

당신은 엑셀에서, 즉, 이메일의 전송을 자동화하는 다른 응용 프로그램을 사용하여 완전히 Outlook의이 실행 (그리고하지 않는 경우 또는 PowerPoint 등) 다음이 문제 :

모달로 UserForm3 표시됩니다. 즉, 양식이 표시되는 동안 응용 프로그램이 본질적으로 보류 중임을 의미합니다.

userform3.show vbModeless 

참고 :

처럼, modelessly를 표시,이 오류를 방지하려면이 양식이 표시되는 동안 사용자가 아웃룩 응용 프로그램과 상호 작용할 수 있습니다. 이것은 원하지 않을 수도 있습니다.이 경우 전자 메일을 표시하기 전에 사용자 양식을 닫거나 숨겨야 할 것입니다. 그냥 .Display 명령을 이전 Unload Me을 추가

Set olMessage = olApp.CreateItem(olMailItem) 
olMessage.To = strEmailTo 
olMessage.CC = strEmailCC 
olMessage.Subject = strSubject 
olMessage.Body = strBody 
olMessage.Importance = olImportanceHigh 
olMessage.Sensitivity = olConfidential 
Unload Me 
olMessage.Display ' Line With Error 

모두 위의 방법이 오류를 방지. 어느 것을 사용할지 선택하는 것은 귀하의 특정 요구에 달려 있습니다.

1

은 또는 당신은 단순히 코드를 실행하기 전에 양식을 숨길 수 :

Private Sub cmdButton_Click() 

UserForm3.hide 

    Set olMessage = olApp.CreateItem(olMailItem) 
    olMessage.To = strEmailTo 
    olMessage.CC = strEmailCC 
    olMessage.Subject = strSubject 
    olMessage.Body = strBody 
    olMessage.Importance = olImportanceHigh 
    olMessage.Sensitivity = olConfidential 
    olMessage.Display ' Line With Error 

End Sub 

정의 폼을 숨기기하면 "열기 대화 상자"오류를 무시하고 사용자 입력을 유지합니다. 또한 VB 형식을 다루는 것보다 간단하며 원하지 않는 동작을 방지합니다.

관련 문제