Mos*_*ess 4 clipboard microsoft-outlook-2007 vba
如何在 Microsoft Outlook 2007 中获取当前选定的文本
并将其复制到剪贴板?
我正在使用 Microsoft Outlook 2007。
我知道我可以使用 DataObjects 将文本放入剪贴板或从剪贴板获取文本。
难点是获取当前选中的文本
我尝试了以下命令:
我发现一些消息来源指出无法通过 VBA 在 Outlook 中获取当前选定的文本,但我认为至少必须可以调用 Ctrl-C(复制)命令,然后使用剪贴板的内容。
我还偶然发现了与督察一些解决方案所描述的在这里,但我得到了一个错误信息。也许是因为我忘记引用“MS Word 对象库”——我会在星期一尝试。
由于 Outlook 使用 Word(如果已安装)作为其编辑器,因此获取它有点麻烦。:)
您必须参考 Word 应用程序,然后是 Word 文档,然后是选择。
为了使以下代码在 Outlook 中工作,您需要向“Microsoft Word 对象库”添加一个引用(VBA 编辑器 -> 工具 -> 引用),并将一个引用添加到“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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7823 次 |
| 最近记录: |