Microsoft Outlook 2007で現在選択されているテキストを取得するにはどうすればよいですか?
そしてそれをクリップボードにコピーしますか?
Microsoft Outlook2007を使用しています。
DataObjectsを使用してテキストをクリップボードに入れたり、クリップボードからテキストを取得したりできることを知っています。
難しいのは、現在選択されているテキストを取得することです
次のコマンドを試しました。
Outlookで現在選択されているテキストをVBA経由で取得することはできないと述べている情報源をいくつか見つけましたが、少なくともCtrl-C(コピー)コマンドを呼び出してクリップボードの内容を使用できる必要があると思います。
また、説明されているようにインスペクターでいくつかの解決策に出くわしました ここ 、しかし私はエラーメッセージを受け取りました。 「MSWordオブジェクトライブラリ」を参照し忘れたせいか、月曜日にやってみます。
OutlookはWord(インストールされている場合)をエディターとして使用するため、Wordを入手するのは少し面倒です。 :)
Wordアプリケーション、Word文書、選択の順に参照する必要があります。
次のコードをOutlookで機能させるには、「Microsoft Wordオブジェクトライブラリ」に参照(VBAエディター->ツール->参照)を追加し、「Microsoftフォームオブジェクトライブラリ」に1つ追加する必要があります。 、システムクリップボードのテキストを実際にコピーできるようにします。
注:私にとって、Office 2013では、MSフォームオブジェクトがリストに含まれていなかったため、VBAプロジェクトにユーザーフォームを追加しました。これにより、参照が自動的に追加され、フォームが削除されました。 。参照がスタックしました。
とにかく私は多くのソースを掘り下げました、そしてここにいくつかの基本的なエラーチェック(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