2013-12-17 3 views
2

내가 (HTML 형식으로) 내가 현재 쓰고있는 전자 메일 메시지에서 선택한 텍스트를 취할 것입니다 전망 2013에 대한 VBA 매크로를 만들려고하고 있고 설정 글꼴 크기/색상/굵게/강조 표시VBA 매크로

내 매크로 두/다음의 경우 블록이있다. 하나의 블록은 Outlook 2003 용이며 4 가지 텍스트 특성 모두에 대해 원하는 결과를 제공합니다. 그러나 2003 년 이후 Outlook에서는 HTML 전자 메일 용 Word EditorType을 사용하므로 선택한 텍스트의 글꼴을 변경하는 데 다른 구문을 사용하여 다른 VBA 블록이 필요합니다. 내 2013 블록의 VBA는 굵게/포인트 크기를 변경하기 위해 올바르게 작동하지만 텍스트 강조 표시는 적용되지 않습니다. 대신 텍스트를 강조 표시하기위한 명령 (rng.Range.HighlightColorIndex = wdYellow)은 선택 창의 배경색을 지우도록 변경하므로 (텍스트가 실제로 선택되어 있어도 텍스트가 더 이상 선택되지 않게 표시됨) , 강조 표시는 선택한 텍스트에 적용되지 않습니다.

작동하지 않았다 텍스트를 강조

, 나는 다른 무언가를 시도했다. vba 명령을 사용하여 배경을 노란색으로 설정하려고했는데 (vba없이 수동으로 적용했을 때와 동일한 시각 효과가 있음) rng.Shading.BackgroundPatternColor = wdColorYellow. 그러나 배경을 노란색으로 바꾸는 대신 배경이 검은 색으로 바뀝니다.

또한 2,013 블록 폰트 색상 변화가 발생하지 않는다. 성명 (rng.Font.Color = wdColorBlue)에도 불구하고 글꼴 색이 검은 색으로 유지됩니다.

선택한 텍스트를 노란색으로 강조 표시하고 선택한 텍스트의 색을 파란색으로 설정하는 방법을 알려주십시오.

전체 VBA 매크로는 아래와 같습니다.

Sub ChangeSelectedFontBold14HiYellow() 
Dim msg As Outlook.MailItem 
Dim insp As Outlook.Inspector 

Set insp = Application.ActiveInspector 

If insp.CurrentItem.Class = olMail Then 
    Set msg = insp.CurrentItem 

    If insp.EditorType = olEditorHTML Then ' outlook 2003 
     Set hed = msg.GetInspector.HTMLEditor 
     Set rng = hed.Selection.createRange 
     rng.pasteHTML "<b><font style='color: blue; background: yellow; font-size: 14pt;'>" & rng.Text & "</font></b>" 
    End If 

    If insp.EditorType = olEditorWord Then ' outlook 2013 
     Set hed = msg.GetInspector.WordEditor 
     Set word = hed.Application 
     Set rng = word.Selection 
     rng.Font.Size = 14 
     rng.Font.Color = wdColorBlue ' color does not change 
     rng.Font.Bold = True 
     ' rng.Shading.BackgroundPatternColor = wdColorYellow ' changes background color to black instead of yellow 
     ' rng.HighlightColorIndex = wdYellow ' does not work ' error 438 object doesn't support this property 
     rng.Range.HighlightColorIndex = wdYellow ' does not work - changes the background to clear for the selection indicator color 

    End If 

End If 
Set insp = Nothing 
Set rng = Nothing 
Set hed = Nothing 
Set msg = Nothing 
End Sub 

답변

4

당신은 Word 개체 라이브러리에 VBA 프로젝트 참조를 추가, 또는 그 정수를 Outlook이 wdColorBluewdYellow의 진정한 가치가 무엇인지 이해할 수 있도록 정의해야합니다. 나는 (당신이 참조를 추가하는 경우 그러나 당신은 변수 이름으로 Word을 사용할 수 없습니다)

다음

나 (더 많거나 적은 근무 무슨 코드가 원하는 효과를 가지고 있다고했다

- I이었다 직장에서 나는 Collapse 부분 Outlook에서 또한 Word에서 이렇게 해야 일을 잘 작동) ...하지만 거기 지금, 시험했을 때.

Sub ChangeSelectedFontBold14HiYellow() 
Dim msg As Outlook.MailItem 
Dim insp As Outlook.Inspector 

Set insp = Application.ActiveInspector 

If insp.CurrentItem.Class = olMail Then 
    Set msg = insp.CurrentItem 

    If insp.EditorType = olEditorHTML Then ' outlook 2003 
     Set hed = msg.GetInspector.HTMLEditor 
     Set rng = hed.Selection.createRange 
     rng.pasteHTML "<b><font style='color: blue; background: yellow; font-size: 14pt;'>" & rng.Text & "</font></b>" 
    End If 

    If insp.EditorType = olEditorWord Then ' outlook 2013 
     Set hed = msg.GetInspector.WordEditor 
     Set appWord = hed.Application 
     Set rng = appWord.Selection 
     rng.Font.Size = 14 
     rng.Font.Color = wdColorBlue 
     rng.Font.Bold = True 
     rng.Range.HighlightColorIndex = wdYellow 

     rng.Collapse Direction:=wdCollapseEnd 'UNTESTED, but something like this... 
    End If 

End If 

Set appWord = Nothing 
Set insp = Nothing 
Set rng = Nothing 
Set hed = Nothing 
Set msg = Nothing 

End Sub 
+0

감사합니다. 작동하는 코드를 게시 할 수 있습니까? 나는 거의 다 왔지만 여전히 문제가있다. rng.Range.HighlightColorIndex = wdYellow = 7로 변경했습니다. 이제 강조 표시가 올바르게 작동합니다. 그러나 rng.Font.Color = wdColorBlue를 = 2 (또는 다른 숫자)로 변경해도 텍스트 색상이 변경되지는 않습니다. 그런데 매크로의 마지막 단계에서 선택한 텍스트에 변경 사항을 적용한 후 텍스트의 선택을 취소하고 커서 삽입 포인터를 오른쪽의 다음 위치로 이동합니다 (사용자가 오른쪽 화살표를 입력 한 것처럼 키). vba를 통해 Outlook에서 어떻게 할 수 있습니까? – user3109378

+0

'wdColorBlue'의 값은 16711680입니다. VB 편집기로 이동하여 개체 브라우저 (F2)를 사용하여이 상수 값을 찾습니다. "ColorIndex"유형 상수의 값은 낮은 숫자 인 반면, "색상"상수는 넓은 범위의 잠재적 값을 가진 Long 유형의 숫자가됩니다 (검정 = 0에서 흰색 = 16777215까지) –

+0

감사합니다 Tim. 이 문은 올바르게 작동합니다. rng.Collapse Direction : = wdCollapseEnd. 또한 2를 16711680으로 변경하면 파란색 문제가 해결됩니다. 완전성을 위해 게시 된 버전을 색상 변수 이름으로 어떻게 운동하게 만들었습니까? 즉, Word 개체 라이브러리에 VBA 프로젝트 참조를 어떻게 추가 했습니까? 나는 그것을 봤지만 지시를 찾을 수 없었다. – user3109378