2017-10-10 19 views
0

Outlook 템플릿을 서식 지정하고 단추를 클릭하여 보내려면 스크립트를 개발 중입니다. 주요 목표는 After/Before Spacing에서 단선 간격과 0pt를 사용하고 내 서식 파일의 모든 내용 컨트롤 (예 : ComboBox)을 Text/String로 변환하는 것입니다.VBA를 사용하여 콘텐츠 컨트롤 값을 문자열로 변환

Sub FormatAndSend() 
    Dim CurrentMessage As Outlook.MailItem 

    If TypeName(Application.ActiveWindow) = "Inspector" Then 
     Set CurrentMessage = Application.ActiveWindow.CurrentItem 

     If CurrentMessage.To = "" Then 
      If CurrentMessage.CC = "" Then 
       If CurrentMessage.BCC = "" Then Exit Sub 
      End If 
     End If 

     CurrentMessage.HTMLBody = Replace(CurrentMessage.HTMLBody, vbCr, vbCrLf) 
     'Workaround to Remove Line Spacing (not working) 
     '& 
     'Convert Content Control selected values to String ... 

     CurrentMessage.Send 

     Set CurrentMessage = Nothing 
    End If 
End Sub 

기존 템플릿을 포맷하는 쉬운 방법이 있나요? ASCII 문자, HTML 요소, 키워드로 대체하는 등 여러 가지 작업을 이미 시도했습니다 ...

또한 컨텐트 제어 선택 값을 일반 텍스트로 변환 할 수 있습니까?

+0

좋아요, 그렇다면 어떻게하면 "콤보 박스"를 "텍스트"로 "변환"할 계획입니까? 정확히 무엇을 의미하는지, 그리고 어떤 코드를 작성했는지, 구체적으로 어디에서 & 어떻게 작동하지 않습니까? –

+0

내 말은, 콤보 상자에서 선택한 값을 변환한다는 의미입니다. 따라서 누군가가 메시지를 전달/회신 할 때 그 내용을 변경할 수 없습니다. – mafap

+0

Outlook 개체 모델에 익숙하지 않지만 'MailItem' 클래스를 한눈에 볼 수 있습니다. 'Controls' 콜렉션 인 것처럼 보이므로'HtmlBody'를 파싱하는 것이 최선책 인 것처럼 보입니다. –

답변

0

정규식을 사용하여 OOXML 요소를 제거하고 CSS 속성을 변경하여 문제를 해결할 수있었습니다.

Dim regX As Object 
Set regX = CreateObject("VBScript.RegExp") 

regX.Global = True 
regX.MultiLine = True 
regX.IgnoreCase = False 
regX.Pattern = "<\/?w:[A-z].*?>" 

CurrentMessage.HTMLBody = regX.Replace(CurrentMessage.HTMLBody, "") 
CurrentMessage.HTMLBody = Replace(CurrentMessage.HTMLBody, "<p class=MsoNormal>", _ 
          & "<p class=MsoNormal style='margin:0;line-height:0;'>") 
Set regX = Nothing