2009-05-12 4 views
1

목표 : Outlook 툴바에 버튼을 누르면 현재 메시지가 전체 (대개 .msg 파일)의 URL로 게시물을 통해 전송됩니다. 어떤 종류의 브라우저 창을 프로세스에서 열어야하므로 사용자가 URL에서 응용 프로그램의 로그인 세부 정보를 입력 할 수 있습니다 (이 문제를 해결할 수 없다면?).Outlook : VBA를 사용하여 선택한 메시지를 웹 서버에 게시하려면 어떻게합니까?

VBA 매크로를 만들고 Outlook 2007에 단추를 추가했습니다 (적어도 Outlook 2003에서도 작동해야 함).

VBA FollowHyperlink 메서드에 대해 읽었지만 작은 VBA 매크로 IDE에서이를 인식하지 못했습니다 (Application.FollowHyperlink 및 다른 여러 시도에서 오류가 발생했습니다).

(저는 .NET 프로그래머 인 VBA에 익숙하지 않으므로 VB.NET이나 C#에서 간단한 방법이 있다면 꼭 올바른 방향으로 가리켜 야합니다).

아이디어가 있으십니까?

답변

3

다음은 어떻게 작동해야하는지에 대한 개요입니다. 통신에

  • "WinHttp.WinHttpRequest.5" COM 개체 (FollowHyperlink()를 조사하는 것은 무의미합니다)를 사용합니다. 이 객체는 생각할 수있는 모든 형태의 HTTP 요청을 처리 할 수 ​​있습니다. Intellisense 및 초기 바인딩을 얻으려면 Outlook VBA 프로젝트에서 참조하십시오.
  • 사용자 이름과 암호로 두 개의 텍스트 상자가있는 작은 사용자 지정 양식을 만듭니다. 양식을 사용하여 사용자 이름과 암호를 캐시 할 수도 있습니다 (양식이 보이지 않을 때 "숨기기"를 호출하십시오 - 양식 레벨 변수는 모두 그대로 유지되므로 다시 사용할 수 있습니다).
  • 페이로드를 준비하려면이 방법 (KB240935)을 사용하여 현재 선택된 항목을 가져오고 유형 (If TypeOf currentItem Is MailItem Then ...)을 확인한 다음 SaveAs()으로 호출하여 임시 폴더에 .msg로 저장합니다. 준비된 POST 요청에 그것을 첨부하면 좋은 결과를 얻을 수 있습니다.
  • 사용자 인터페이스의 경우 사용자 지정 CommandBar에 단추를 넣습니다 (Application start에서 프로그래밍 방식으로 단추를 만들 수도 있습니다). 일반 VBA 모듈의 Public Sub에 단추를 연결하십시오. 이 Sub에서 Show() 사용자 정의 사용자 이름/암호 대화 상자가 필요하거나 캐시 된 자격 증명이 존재하는지 확인하고 필요한 HTTP 요청 처리를 수행하십시오.

행운을 빈다. 너무 복잡해서는 안됩니다.

+1

Tomalak이 VSTO 및 C#과 Webclient 등의 개체를 사용하여 동일한 아이디어를 사용할 수 있습니다. 두 가지 모두에서 작업하려면 2007/2003 Outlook 참조를주의해야합니다. – 76mel

+0

비록 VBA가 덜 현대적이라 할지라도 (또는 정확히 말하면) VBA가 더 이식성있는 솔루션이 될 수 있습니다. 또한 구현하기가 더 쉽다고 말하고 싶습니다. – Tomalak

+0

고마워요 Tomalak, 내가 그걸 줄께. 그건 그렇고, 왜 FollowHyperlink 조사가 무의미한거야? – MGOwen

관련 문제