Outlook VBA - bagaimana cara menyalin teks yang saat ini dipilih ke clipboard?

4

Pertanyaan saya

Bagaimana bisa mendapatkan teks yang saat ini dipilih di Microsoft Outlook 2007

  • di jendela pesan terbuka
  • atau di pesan yang saat ini dipilih di panel pratinjau

dan salin ke clipboard?

Saya menggunakan Microsoft Outlook 2007.


Apa yang sudah saya coba

Saya tahu bahwa saya bisa menggunakan DataObjects untuk memasukkan teks ke clipboard atau mendapatkan teks dari clipboard.

Kesulitannya adalah mendapatkan teks yang saat ini dipilih

Saya mencoba perintah berikut:

  • Outlook.copy
  • Outlook.selection.copy
  • Outlook.activeexplorer.selection.item (1). ...
    dalam banyak variasi, tetapi tidak berhasil.

Saya menemukan beberapa sumber yang menyatakan bahwa tidak mungkin untuk mendapatkan teks yang dipilih saat ini di Outlook melalui VBA tapi saya pikir itu setidaknya harus memungkinkan untuk memanggil perintah Ctrl-C (copy) dan kemudian menggunakan konten clipboard.

Saya juga menemukan beberapa solusi dengan Inspektur seperti dijelaskan di sini , tetapi saya mendapat pesan kesalahan. Mungkin itu karena saya lupa referensi "MS Word Object Library" - Saya akan mencobanya pada hari Senin.

Sebagian besar tidak berbahaya
sumber
1
Apa yang sudah Anda coba? Apa hasilnya? Di mana tepatnya Anda terjebak?
Ƭᴇcʜιᴇ007
1
Terima kasih atas komentar Anda - maaf! Saya benar-benar di bawah tekanan dan terburu-buru, tetapi itu bukan cara yang tepat dan sopan untuk mengajukan pertanyaan di sini. Saya telah mengedit pertanyaan saya dan akan berterima kasih karena menghapus downvote. Terima kasih juga atas balasan terperinci Anda - Saya akan mencobanya pada hari Senin, ketika saya memiliki akses ke komputer lagi.
MostlyHarmless

Jawaban:

5

Karena Outlook menggunakan Word (jika diinstal) sebagai editornya, agak sulit untuk mendapatkannya. :)

Anda harus merujuk aplikasi Word, lalu dokumen Word, lalu seleksi.

Agar kode berikut berfungsi di Outlook, Anda perlu menambahkan Referensi ( VBA Editor -> Tools -> Referensi ) ke "Perpustakaan objek Microsoft Word", dan satu ke "Perpustakaan objek Microsoft Forms", sehingga kita dapat benar-benar menyalin teks clipboard sistem.

Catatan: Bagi saya, di Office 2013, objek MS Forms tidak ada dalam daftar, jadi saya baru saja menambahkan UserForm ke proyek VBA, yang menambahkan referensi secara otomatis, dan kemudian hanya menghapus formulir. Referensi macet.

Bagaimanapun saya menggali banyak sumber dan inilah beberapa kode yang saya tempel bersama yang akan menyalin teks yang disorot ke clipboard, dengan beberapa pengecekan kesalahan dasar (diuji di 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
Ƭᴇcʜιᴇ007
sumber
1
terima kasih, ini berfungsi dengan baik - bahkan jika teks dipilih di panel pratinjau ( Outlook 2007)! (Maaf atas umpan balik saya yang terlambat)
MostlyHarmless