내 질문
Microsoft Outlook 2007에서 현재 선택된 텍스트 를 얻는 방법
- 열린 메시지 창에서
- 또는 미리보기 창에서 현재 선택된 메시지에서
그리고 복사 가 클립 보드에?
Microsoft Outlook 2007을 사용하고 있습니다.
내가 이미 시도한 것
DataObjects를 사용하여 클립 보드에 텍스트를 넣거나 클립 보드에서 텍스트를 가져올 수 있다는 것을 알고 있습니다.
어려움은 현재 선택된 텍스트 를 얻는 것입니다
다음 명령을 시도했습니다.
- Outlook.copy
- Outlook.selection.copy
- Outlook.activeexplorer.selection.item (1). …
많은 변형이 있지만 성공하지 못했습니다.
VBA를 통해 Outlook에서 현재 선택된 텍스트를 가져올 수 없다는 일부 소스를 찾았지만 적어도 Ctrl-C (복사) 명령을 호출 한 다음 클립 보드의 내용을 사용할 수 있어야한다고 생각합니다.
또한 여기 에 설명 된 것처럼 검사기를 사용하여 일부 솔루션을 우연히 발견 했지만 오류 메시지가 나타납니다. 아마도 “MS Word Object Library”를 참조하는 것을 잊었 기 때문일 것입니다. 월요일에 시도하겠습니다.
답변
Outlook은 Word (설치된 경우)를 편집기로 사용하기 때문에 약간의 어려움이 있습니다. 🙂
Word 응용 프로그램, Word 문서 및 선택 항목을 참조해야합니다.
다음 코드가 Outlook에서 작동하려면 참조 ( VBA 편집기-> 도구-> 참조 )를 “Microsoft Word 개체 라이브러리”에 추가하고 하나를 “Microsoft Forms 개체 라이브러리”에 추가해야 실제로 복사 할 수 있습니다. 텍스트 시스템 클립 보드
참고 : Office 2013에서는 MS Forms 개체가 목록에 없으므로 VBA 프로젝트에 UserForm을 추가하여 참조를 자동으로 추가 한 다음 양식을 삭제했습니다. 참조가 멈췄습니다.
어쨌든 많은 출처를 파헤 쳤고 강조 표시된 텍스트를 클립 보드에 복사하는 몇 가지 코드가 있습니다. 일부 오류 검사 (Outlook 2013에서 테스트 됨) :
Public Sub CopyTextToClipBoard()
Dim objItem As Object
Dim objInsp As Outlook.Inspector
Dim objWord As Word.Application
Dim objDoc As Word.Document
Dim objSel As Word.Selection
On Error Resume Next
' Reference the current Outlook item
Set objItem = Application.ActiveInspector.CurrentItem
If Not objItem Is Nothing Then
If objItem.Class = olMail Then
Set objInsp = objItem.GetInspector
If objInsp.EditorType = olEditorWord Then
Set objDoc = objInsp.WordEditor
Set objWord = objDoc.Application
Set objSel = objWord.Selection
On Error GoTo NotText
With New MSForms.DataObject
.SetText objSel.Text
.PutInClipboard
End With
On Error Resume Next
End If
End If
End If
Set objItem = Nothing
Set objWord = Nothing
Set objSel = Nothing
Set objInsp = Nothing
NotText:
If Err <> 0 Then
MsgBox "Data on clipboard is not text."
End If
End Sub