Outlook VBA - как скопировать выделенный текст в буфер обмена?


У меня вопрос

Как получить выделенный текст в Microsoft Outlook 2007

  • в открытом окне сообщения
  • или в выбранном сообщения в области просмотра

и скопировать его в буфер обмена?

Я использую Microsoft Outlook 2007.


то, что я уже пробовал

Я знаю, что могу использовать DataObjects для ввода текста в буфер обмена или получить текст из буфера обмена.

трудность заключается в получить выделенный текст

я попробовал следующие команды:

  • Outlook.копировать
  • Outlook.выбор.копировать
  • Outlook.activeexplorer.выбор.пункт(1). ...


    во многих вариациях, но без успеха.

Я нашел некоторые источники, заявляющие, что было бы невозможно получить выбранный текст в Outlook через VBA, но я думаю, что, по крайней мере, можно вызвать команду Ctrl-C (копировать), а затем использовать содержимое буфера обмена.

Я тоже наткнулся на некоторые решения с инспектором, как описано здесь, но я получил сообщение об ошибке.
Может быть, это потому, что я забыл сослаться на "библиотеку объектов MS Word" - я попробую это в понедельник.

15
задан Community
28.11.2022 11:59 Количество просмотров материала 3211
Распечатать страницу

1 ответ

Так как Outlook использует Word (если установлен) в качестве редактора, это немного больно, чтобы получить его. :)

вы должны ссылаться на приложение Word, затем на документ Word, затем на выбор.

для следующего кода для работы в Outlook необходимо добавить ссылку (редактор VBA - > сервис - > ссылки) в "библиотеку объектов Microsoft Word" и один в "библиотеку объектов Microsoft Forms", чтобы мы могли фактически Скопировать текст в систему буфер.

Примечание: для меня в Office 2013 объект MS Forms не был в списке, поэтому я просто добавил пользовательскую форму в проект 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
5
отвечен Ƭᴇcʜιᴇ007 2022-11-29 19:47

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх