Note: The other languages of the website are Google-translated. Back to English

Bagaimana cara mengubah tanda tangan secara otomatis berdasarkan penerima di Outlook?

Secara default, Outlook memiliki fungsi bawaan bagi pengguna untuk secara otomatis mengubah tanda tangan saat mengirim email melalui akun email yang berbeda. Namun di luar itu, di sini saya akan menunjukkan kepada Anda metode mengubah tanda tangan secara otomatis berdasarkan penerima yang berbeda di bidang Ke di Outlook.

Ubah tanda tangan berdasarkan penerima secara otomatis dengan kode VBA


Ubah tanda tangan berdasarkan penerima secara otomatis dengan kode VBA

Ikuti langkah-langkah di bawah ini untuk menerapkan tanda tangan yang berbeda ke penerima yang sesuai saat mengirim email di Outlook.

1. Pertama, Anda perlu menonaktifkan fitur tanda tangan terlampir otomatis di Outlook. Silakan klik File > Opsi untuk membuka Pilihan Outlook jendela.

2. Dalam Pilihan Outlook jendela, pilih surat di panel kiri, lalu klik Tanda tangan tombol di Tulis pesan bagian. Lihat tangkapan layar:

3. Dalam Tanda Tangan dan Alat Tulis kotak dialog, pergi ke Pilih tanda tangan default bagian bawah Tanda Tangan Email tab, pilih akun email di Akun email daftar drop-down, lalu pilih (Tidak ada) dari Pesan baru serta Balasan / penerusan daftar drop-down. Ulangi langkah-langkah ini hingga semua akun email disetel ke (Tidak ada). Kemudian klik OK .

Note: Anda juga dapat membuat tanda tangan yang Anda butuhkan di sini Tanda Tangan dan Alat Tulis kotak dialog.

4. Klik OK tombol saat mengembalikan Pilihan Outlook jendela.

5. tekan lain + F11 kunci untuk membuka Microsoft Visual Basic untuk Aplikasi jendela.

6. Dalam Microsoft Visual Basic untuk Aplikasi jendela, klik dua kali Sesi Pandangan ini di panel kiri untuk membuka jendela Kode, dan salinan di bawah kode VBA ke jendela. Lihat tangkapan layar:

Kode VBA: Secara otomatis mengubah tanda tangan berdasarkan penerima di Outlook

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Updated by ExtendOffice 2022/08/01
Dim xMailItem As MailItem
Dim xRecipients As Recipients
Dim xRecipient As Recipient
Dim xRcpAddress As String
Dim xSignatureFile, xSignaturePath As String
Dim xFSO As Scripting.FileSystemObject
Dim xDoc As Document
Dim xFindStr As String
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
If Item.Class <> olMail Then Exit Sub
Set xMailItem = Item
Set xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
For Each xRecipient In xRecipients
    If xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Then
        xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Else
        xRcpAddress = xRecipient.AddressEntry.Address
    End If
    Select Case xRcpAddress
        Case "Email Address 1"
            xSignatureFile = xSignaturePath & "aaa.htm"
            Exit For
        Case "Email Address 2", "Email Address 3"
            xSignatureFile = xSignaturePath & "bbb.htm"
            Exit For
        Case "Email Address 4"
            xSignatureFile = xSignaturePath & "ccc.htm"
            Exit For
    End Select
Next
VBA.DoEvents
Set xDoc = xMailItem.GetInspector.WordEditor
xFindStr = "From: " & xMailItem.Recipients.Item(1).Name & " <" & xRcpAddress & ">"
If VBA.InStr(1, xMailItem.Body, xFindStr) <> 0 Then
    xDoc.Application.Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    With xDoc.Application.Selection.Find
        .ClearFormatting
        .Text = xFindStr
        .Execute Forward:=True
    End With
    With xDoc.Application.Selection
        .MoveLeft wdCharacter, 2
        .InsertParagraphAfter
        .MoveDown Unit:=wdLine, Count:=1
    End With
Else
    With xDoc.Application.Selection
        .EndKey Unit:=wdStory, Extend:=wdMove
        .InsertParagraphAfter
        .MoveDown Unit:=wdLine, Count:=1
    End With
End If
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End Sub

Catatan:

  • 1). Di kode VBA, harap ganti "Alamat Email 1/2/3/4”Dengan alamat email tertentu dari penerima.
  • 2). "aaa.htm""bbb.htm"Dan"ccc.htm" adalah tanda tangan tertentu yang akan Anda kirim ke penerima yang sesuai.
  • 3). Dalam hal ini, tanda tangan "aaa"Akan dikirim ke"Alamat Email 1", Tanda tangan"bbb"Akan dikirim ke"Alamat Email 2"Dan"Alamat Email 3", dan “Alamat Email 4"Akan menerima email yang disematkan dengan tanda tangan"ccc". Silakan ubah sesuai kebutuhan Anda.
  • 4). Jika ada beberapa penerima dalam satu email, kode hanya mempertimbangkan penerima pertama. Dalam hal ini, penerima lain akan menerima email dengan tanda tangan yang sama dengan penerima pertama.

7. Lalu klik Tools > Referensi untuk pergi ke Referensi-Proyek kotak dialog. Dalam dialog, harap centang kedua Perpustakaan objek Microsoft Word dan Runtime Microsoft Scripting opsi, lalu klik OK tombol, lihat tangkapan layar:

8. tekan lain + Q kunci untuk menutup Microsoft Visual Basic untuk Aplikasi jendela.

Mulai sekarang, setelah membuat email dan menekan tombol Send, tanda tangan yang sesuai akan secara otomatis dimasukkan di akhir badan email berdasarkan alamat email penerima di kolom To.


Secara Otomatis Masukkan Tanggal Sekarang sebagai Tanda Tangan Saat Mengirim Email Di Outlook:

Jika Anda ingin memasukkan stempel waktu sebagai tanda tangan ke badan email saat membuat / membalas / meneruskan email baru di Outlook Anda, Anda dapat mengaktifkan Tambahkan tanda tangan tanggal saat membuat baru, membalas dan meneruskan email pilihan dari Kutools for Outlook untuk mencapainya. Lihat tangkapan layar:
Unduh dan coba sekarang (jejak gratis 60 hari)


Kutools for Outlook - Menghadirkan 100 Fitur Lanjutan ke Outlook, dan Membuat Pekerjaan Lebih Mudah!

  • CC / BCC Otomatis dengan aturan saat mengirim email; Maju Otomatis Beberapa Email secara khusus; Balas otomatis tanpa server pertukaran, dan lebih banyak fitur otomatis ...
  • Peringatan BCC - tunjukkan pesan ketika Anda mencoba membalas semua jika alamat email Anda ada di daftar BCC; Ingatkan Saat Lampiran Hilang, dan lebih banyak fitur pengingat ...
  • Balas (Semua) Dengan Semua Lampiran di percakapan surat; Balas Banyak Email dalam hitungan detik; Tambah Salam Otomatis saat membalas; Tambahkan Tanggal ke dalam subjek ...
  • Alat Lampiran: Kelola Semua Lampiran di Semua Email, Lepaskan Otomatis, Kompres Semua, Ganti Nama Semua, Simpan Semua ... Laporan Cepat, Hitung Email yang Dipilih...
  • Email Sampah yang Kuat dengan kebiasaan; Hapus Duplikat Email dan Kontak... Memungkinkan Anda melakukan lebih cerdas, lebih cepat, dan lebih baik di Outlook.
shot kutools outlook tab kutools 1180x121
tembak kutools outlook kutools plus tab 1180x121
 
Urutkan komentar berdasarkan
komentar (43)
Belum ada peringkat. Jadilah yang pertama memberi peringkat!
Komentar ini diminimalkan oleh moderator di situs
Bagaimana perilaku ini jika ada banyak penerima?
Komentar ini diminimalkan oleh moderator di situs
Hai Devansh,
Jika ada beberapa penerima dalam satu email, kode hanya berfungsi untuk yang pertama. Dan semua penerima akan menerima email dengan tanda tangan yang sama yang ditentukan untuk orang tersebut.
Jika Anda ingin menyertakan tanda tangan yang berbeda ketika ada beberapa penerima, email harus dikirim secara terpisah ke penerima yang berbeda. Dan itu akan membutuhkan kode lain untuk dicapai.
Komentar ini diminimalkan oleh moderator di situs
Halo! Skrip yang sangat bagus, tetapi ada masalah saat mengirim ke alamat pertukaran, xRcpAddress mengembalikan nama X400 bukan alamat smtp, ini membuat tidak mungkin untuk memilih berdasarkan domain. Apakah ada solusi untuk ini?


Hanya untuk meningkatkan, saya telah mengubah pernyataan kasus menjadi jika menggunakan fungsi inStr untuk membedakan surat secara massal

Jika InStr(xRcpAddress, "@example") Kemudian
xSignatureFile = xSignaturePath & "aaa.htm"
End If
Komentar ini diminimalkan oleh moderator di situs
Saya menambahkan skrip pintar ini ke Outlook 2013 dan dengan benar mengidentifikasi dan memilih tanda tangan email berbeda yang saya gunakan.

Saya memiliki masalah dengan salah satu grafik yang merupakan bagian dari satu tanda tangan. Alih-alih grafik yang ditampilkan, folder "Item Terkirim" (dan penerima) menunjukkan email dengan tangkapan layar terlampir dan mencoba mengunduh gambar tidak berfungsi.

Jika saya menonaktifkan skrip dan menandatangani secara manual maka email keluar benar dan penerima mendapatkan apa yang saya inginkan. Yang lebih menarik adalah bahwa dengan tanda tangan lain yang lebih sederhana di mana grafiknya hanya garis lurus, ini disertakan meskipun grafiknya sedikit diubah.

Grafiknya adalah file PNG 80KB 5904 x 1024 piksel dengan kedalaman bit 32 dan saya telah mencoba ukuran yang lebih kecil hingga 10KB 369 x 64 piksel yang tidak membantu. Versi Outlook saya adalah 15.0.5189.1000 32Bit Professional Plus 2013 pada platform Windows 10 Pro.

Saya ingin tahu apakah Anda dapat menyarankan solusi untuk ini.
Komentar ini diminimalkan oleh moderator di situs
Amanda yang terhormat,
Kami telah memperbarui kode. Terima kasih telah mengingatkan saya tentang kesalahan.
Komentar ini diminimalkan oleh moderator di situs
Skrip yang sangat bagus tetapi file gambar di tanda tangan saya tidak terkirim dengan benar. Bisakah Anda memperbaiki masalah ini?
Komentar ini diminimalkan oleh moderator di situs
Hai Vysakh,
Kode telah diperbarui, dan masalah gambar telah diperbaiki sekarang. Maaf untuk ketidaknyamanannya.
Komentar ini diminimalkan oleh moderator di situs
Hai Kristal,

apa yang Anda ubah untuk memperbaiki masalah gambar? Saya menggunakan kode terbaru Anda dan saya memiliki masalah yang sama dengan Amanda.
Terima kasih
Komentar ini diminimalkan oleh moderator di situs
Hai,
Maaf atas kesalahannya. VBA telah diperbarui lagi, dan masalah gambar telah diperbaiki sepenuhnya sekarang.
Komentar ini diminimalkan oleh moderator di situs
Selain kode, pengoperasian langkah 7 juga berubah. Silakan ikuti instruksi langkah demi langkah untuk menurunkannya.
Komentar ini diminimalkan oleh moderator di situs
Hai, saya ingin menerapkan ini untuk membedakan tanda tangan saat mengirim email internal dan eksternal. Oleh karena itu, alih-alih mengenali alamat email tertentu, saya hanya perlu membedakan dengan alamat email penerima yang berisi nama perusahaan saya di dalamnya atau tidak. Bisakah Anda memberi tahu saya bagaimana kodenya untuk kasus khusus ini?


(Misalnya jika saya ingin menandatangani dengan tanda tangan "internal.htm" ketika email penerima berisi string "microsoft" dan tanda tangan "external.htm" jika tidak mengandung string "microsoft". Dalam hal ini alamat seperti ' jane@microsoft.com', 'tom@microsoft.support.com' dan 'recruiting@microsoft.europe.com' semuanya akan dianggap sebagai penerima internal untuk karyawan Microsoft).

Terima kasih!!
Komentar ini diminimalkan oleh moderator di situs
Hai pauli,
Silakan coba kode di bawah ini. Sebelum menerapkan kode, silakan pergi ke Referensi dialog untuk memeriksa Perpustakaan objek Microsoft Word kotak (seperti gambar terlampir yang ditunjukkan).

Private Sub Application_ItemSend (Item ByVal Sebagai Objek, Batalkan Sebagai Boolean)

'Diperbaharui oleh ExtendOffice 2020 / 6 / 12

Redupkan xMailItem Sebagai MailItem

Redupkan xPenerima Sebagai Penerima

Redupkan xPenerima Sebagai Penerima

Redupkan xRcpAddress Sebagai String

Redupkan xSignatureFile, xSignaturePath Sebagai String

Redupkan xFSO Sebagai Scripting.FileSystemObject

Redupkan xDoc Sebagai Dokumen

On Error Resume Next

Setel xFSO = Scripting.FileSystemObject Baru

Jika Item.Class <> olMail Kemudian Keluar Sub

Setel xMailItem = Barang

Setel xRecipients = xMailItem.Recipients

xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"

Untuk Setiap xRecipient Dalam xRecipients

Jika xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Kemudian

xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress

Lain

xRcpAddress = xRecipient.AddressEntry.Address

End If

Jika VBA.InStr(VBA.LCase(xRcpAddress), "@microsoft") > 0 Kemudian 'Masukkan string dalam tanda kutip ganda. Jika alamat email penerima berisi string ini, tanda tangan "internal.htm" di bawah ini akan ditetapkan ke email. Jika tidak, tetapkan tanda tangan "external.htm".

xSignatureFile = xSignaturePath & "intern.htm"

Keluar Untuk

Lain

xSignatureFile = xSignaturePath & "luar.htm"

End If

Selanjutnya

VBA.DoEvents

Setel xDoc = xMailItem.GetInspector.WordEditor

xDoc.Application.Selection.EndKey

xDoc.Application.Selection.InsertParagraphAfter

xDoc.Application.Selection.MoveDown Satuan:=wdLine, Hitung:=1

xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Tautan:=Salah, Lampiran:=Salah

End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai, Kristal, saya punya pertanyaan. Ketika saya mengirim email ke penerima eksternal dan internal, bagaimana saya bisa membedakannya dengan memilih selalu tanda tangan eksternal? terima kasih
Komentar ini diminimalkan oleh moderator di situs
Anda mungkin telah menemukan solusi untuk diri Anda sendiri sekarang atau meninggalkan utas ini sejak lama, tetapi saya merasakan dorongan untuk menyelesaikan ini sekarang. Jawaban sederhana untuk pertanyaan ini:
Edit If-Else-Clause (yang membedakan antara dua tanda tangan) menjadi berikut:
Jika VBA.InStr(VBA.LCase(xRcpAddress), "@microsoft") = 0 Kemudian 'Masukkan string dalam tanda kutip ganda. Jika alamat email penerima berisi string ini, tanda tangan "internal.htm" di bawah ini akan ditetapkan ke email. Jika tidak, tetapkan tanda tangan "external.htm".
xSignatureFile = xSignaturePath & "external.htm"
Keluar Untuk
Lain
xSignatureFile = xSignaturePath & "internal.htm"
End If

Apa yang terjadi sekarang:
Jika alamat penerima dari daftar alamat penerima TIDAK berisi string yang diberikan, gunakan tanda tangan eksternal dan berhenti mencari penerima lebih lanjut. Jika tidak, gunakan tanda tangan internal dan cari alamat penerima berikutnya.
Komentar ini diminimalkan oleh moderator di situs
Saya memiliki beberapa perilaku aneh dengan email Outlook yang dihasilkan VBA. Tanda tangan ditambahkan ke surat sebagaimana dimaksud, tetapi tidak diposisikan di bagian bawah email melainkan di tengah (seperti di ruang kosong pertama). Adakah ide mengapa dan bagaimana cara mengatasinya?
Komentar ini diminimalkan oleh moderator di situs
Tim saya memiliki masalah yang sama. Di mana pun pengguna mengklik terakhir adalah tempat gambar disisipkan. Adakah yang punya cara untuk memaksa gambar tepat di atas tanda tangan?
Komentar ini diminimalkan oleh moderator di situs
Halo Kristal,
Saya tertarik dengan kode VBA yang Anda tulis untuk "pauli" di bawah ini, tetapi ketika saya menjalankannya, kesalahan berikut dibuat (dan baris kode "XDoc as Document" disorot):
"Kesalahan kompilasi: Jenis yang ditentukan pengguna tidak ditentukan"
Bagaimana saya bisa menyelesaikan masalah ini?

Terima kasih, Tim
Komentar ini diminimalkan oleh moderator di situs
Halo Kristal,

Saya tertarik dengan kode VBA yang Anda tulis untuk "pauli" di bawah ini, tetapi ketika saya menjalankannya, kesalahan berikut dibuat (dan baris kode "XDoc as Document" disorot):

"Kesalahan kompilasi: Jenis yang ditentukan pengguna tidak ditentukan"

Bagaimana saya bisa menyelesaikan masalah ini?

Terima kasih!
Komentar ini diminimalkan oleh moderator di situs
Hai Tim, Sebelum menerapkan kode, silakan buka dialog Referensi untuk memeriksa Perpustakaan objek Microsoft Word kotak (seperti gambar terlampir yang ditunjukkan).
Komentar ini diminimalkan oleh moderator di situs
Skrip yang bagus. Terima kasih. Cara apa pun untuk memasukkan tanda tangan sebelum menekan kirim ke pratinjau. Saya tahu saya dapat menunda pengiriman dan melihatnya di kotak keluar. Saat ini tidak muncul sampai saya menekan kirim. Jika tidak, apakah ada perangkat lunak yang secara otomatis memberikan tanda tangan berdasarkan Kontak. Kami telah menggunakan program selama bertahun-tahun yang berfungsi dengan baik tetapi tidak berfungsi di Outlook versi baru.
Komentar ini diminimalkan oleh moderator di situs
Skrip ini bagus dan fungsional untuk apa yang saya cari. Apakah mungkin untuk membedakan kode jika pesannya baru atau balasan serta domain email? Misalnya untuk lebih memilih tanda tangan terpisah untuk balasan ke penerima eksternal vs pesan baru ke penerima eksternal?
Terima kasih untuk berbagi.
Komentar ini diminimalkan oleh moderator di situs
Hai Seth,Kode di bawah ini membedakan apakah pesan tersebut baru atau balasan untuk menyisipkan tanda tangan. Anda perlu mengubah "Alamat email"Dan"Balas Alamat Email" dan nama tanda tangan yang sesuai dalam kode.
Private Sub Application_ItemSend (Item ByVal Sebagai Objek, Batalkan Sebagai Boolean)
'Diperbaharui oleh ExtendOffice 2020 / 12 / 24
Redupkan xMailItem Sebagai MailItem
Redupkan xPenerima Sebagai Penerima
Redupkan xPenerima Sebagai Penerima
Redupkan xRcpAddress Sebagai String
Redupkan xSignatureFile, xSignaturePath Sebagai String
Redupkan xFSO Sebagai Scripting.FileSystemObject
Redupkan xDoc Sebagai Dokumen
On Error Resume Next
Setel xFSO = Scripting.FileSystemObject Baru
Jika Item.Class <> olMail Kemudian Keluar Sub
Setel xMailItem = Barang
Setel xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
Jika InStr(xMailItem.Subject, "RE: ") <> 1 Kemudian
Untuk Setiap xRecipient Dalam xRecipients
Jika xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Kemudian
xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Lain
xRcpAddress = xRecipient.AddressEntry.Address
End If
Pilih Kasus xRcpAddress
Kasus "Alamat Email 1"
xSignatureFile = xSignaturePath & "aaa.htm"
Keluar Untuk
Kasus "Alamat Email 2""Alamat Email 3"
xSignatureFile = xSignaturePath & "bbb.htm"
Keluar Untuk
Kasus "Alamat Email 4"
xSignatureFile = xSignaturePath & "ccc.htm"
Keluar Untuk
End Select
Selanjutnya
Lain
Untuk Setiap xRecipient Dalam xRecipients
Jika xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Kemudian
xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Lain
xRcpAddress = xRecipient.AddressEntry.Address
End If
Pilih Kasus xRcpAddress
Kasus "b"
xSignatureFile = xSignaturePath & "111.htm" '111.htm adalah nama tanda tangan yang akan Anda sisipkan saat membalas "Alamat Email Balas 1"
Keluar Untuk
Kasus "Balas Alamat Email 2""Balas Alamat Email 3"
xSignatureFile = xSignaturePath & "222.htm"
Keluar Untuk
Kasus "Balas Alamat Email 4"
xSignatureFile = xSignaturePath & "333.htm"
Keluar Untuk
End Select
Selanjutnya
End If
VBA.DoEvents
Setel xDoc = xMailItem.GetInspector.WordEditor
xDoc.Application.Selection.EndKey
xDoc.Application.Selection.InsertParagraphAfter
xDoc.Application.Selection.MoveDown Satuan:=wdLine, Hitung:=1
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Tautan:=Salah, Lampiran:=Salah
End Sub
Komentar ini diminimalkan oleh moderator di situs
Kode ini berfungsi untuk saya sampai saya me-restart PC saya. Ketika saya membuka alt+F11 lagi, semua kode masih di tempat yang sama, tetapi ketika saya mengirim email, itu hanya mengirimnya tanpa tanda tangan dan tanpa mengeluarkan apa pun dari pesan peringatan.
Komentar ini diminimalkan oleh moderator di situs
Hai Ivan,Masalahnya disebabkan oleh Excel menonaktifkan opsi Makro. Anda harus masuk ke jendela Opsi Outlook dengan mengklik File > Opsi. di Pilihan Outlook window, klik Trust Center di panel kiri, lalu klik Pengaturan Pusat Kepercayaan tombol. Dalam Trust Center window, klik Pengaturan Makro di panel kiri, lalu pilih Aktifkan semua makro tombol radio dan periksa Terapkan pengaturan keamanan makro ke add-in yang diinstal kotak. Lihat tangkapan layar terlampir di bawah ini.
Komentar ini diminimalkan oleh moderator di situs
Halo Kristal,
Saya punya pertanyaan tentang kode sumber di bawah ini.
Saya ingin mengirim tanda tangan internal hanya ke penerima email tertentu (30), segera setelah alamat email lain ditambahkan, tanda tangan eksternal harus digunakan.
Bisakah Anda membantu saya dengan permintaan saya?
Banyak terima kasih sebelumnya.
Komentar ini diminimalkan oleh moderator di situs
Saya memiliki beberapa pengaturan akun email di Outlook dan mengatur skrip Anda untuk mengirim email dengan tanda tangan yang berbeda ke email internal dan eksternal.

Bagaimana saya bisa memodifikasi skrip sehingga hanya mengirimkan tanda tangan ini jika saya mengirim dari jweaver@andrewslogistics.com?

Dengan kata lain, saya tidak ingin mengirim tanda tangan ini ketika saya mengirim dari alamat email selain jweaver@andrewslogistics.com.

Terima kasih,
Komentar ini diminimalkan oleh moderator di situs
Hai Jeff Weaver,
Kode VBA berikut telah dimodifikasi untuk menyisipkan tanda tangan ini saat mengirim email hanya dari akun email tertentu. Ayo cobalah. semoga saya bisa membantu.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Updated by ExtendOffice 2022/06/10
Dim xMailItem As MailItem
Dim xRecipients As Recipients
Dim xRecipient As Recipient
Dim xRcpAddress As String
Dim xSignatureFile, xSignaturePath As String
Dim xFSO As Scripting.FileSystemObject
Dim xDoc As Document
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
If Item.Class <> olMail Then Exit Sub
Set xMailItem = Item
If xMailItem.SendUsingAccount.SmtpAddress <> "jweaver@andrewslogistics.com" Then Exit Sub 'The email account you send emails from
Set xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
For Each xRecipient In xRecipients
    If xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Then
        xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Else
        xRcpAddress = xRecipient.AddressEntry.Address
    End If
    Select Case xRcpAddress
        Case "Email Address 1"
            xSignatureFile = xSignaturePath & "aaa.htm"
            Exit For
        Case "Email Address 2", "Email Address 3"
            xSignatureFile = xSignaturePath & "bbb.htm"
            Exit For
        Case "Email Address 4"
            xSignatureFile = xSignaturePath & "ccc.htm"
            Exit For
    End Select
Next
VBA.DoEvents
Set xDoc = xMailItem.GetInspector.WordEditor
xDoc.Application.Selection.EndKey
xDoc.Application.Selection.InsertParagraphAfter
xDoc.Application.Selection.MoveDown Unit:=wdLine, Count:=1
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai Crystal - Saya juga memiliki masalah yang sama dengan Tim (#33997) dan Greg (#34358) yang dirujuk di atas, tetapi tidak melihat solusi. Tanda tangan muncul di email saya di tempat terakhir saya klik sebelum saya menekan 'kirim, sehingga sering muncul di tengah email. Adakah bantuan/solusi?

Terima kasih!

Eric
Komentar ini diminimalkan oleh moderator di situs
Hai Eric Anderson,
Terima kasih atas tanggapan Anda. Kode sekarang telah diperbarui dan masalah telah terpecahkan. Ayo cobalah.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Updated by ExtendOffice 2022/6/24
Dim xMailItem As MailItem
Dim xRecipients As Recipients
Dim xRecipient As Recipient
Dim xRcpAddress As String
Dim xSignatureFile, xSignaturePath As String
Dim xFSO As Scripting.FileSystemObject
Dim xDoc As Document
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
If Item.Class <> olMail Then Exit Sub
Set xMailItem = Item
Set xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
For Each xRecipient In xRecipients
    If xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Then
        xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Else
        xRcpAddress = xRecipient.AddressEntry.Address
    End If
    Debug.Print xRcpAddress
    Select Case xRcpAddress
        Case "464653358@qq.com"
            xSignatureFile = xSignaturePath & "aaa.htm"
            Exit For
        Case "siluvia@extendoffice.com", "happy.xuebi@163.com"
            xSignatureFile = xSignaturePath & "bbb.htm"
            Exit For
        Case "happysiluvia@gmail.com"
            xSignatureFile = xSignaturePath & "ccc.htm"
            Exit For
    End Select
Next
VBA.DoEvents
Set xDoc = xMailItem.GetInspector.WordEditor
xDoc.Application.Selection.EndKey Unit:=wdStory, Extend:=wdMove
xDoc.Application.Selection.InsertParagraphAfter
xDoc.Application.Selection.MoveDown Unit:=wdLine, Count:=1
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End Sub
Komentar ini diminimalkan oleh moderator di situs
Halo,

Quand je réponds des mails, la signature automatique s'insère tout en bas, mais j'aimerais qu'elle s'insère en bas de mon pesan moi.

Apakah Anda punya solusi?

Lelian
Komentar ini diminimalkan oleh moderator di situs
Hai LÉLIAN ALEMPS.
Kode VBA telah diperbarui. Terima kasih atas tanggapan Anda. Ayo cobalah.

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Updated by ExtendOffice 2022/08/01
Dim xMailItem As MailItem
Dim xRecipients As Recipients
Dim xRecipient As Recipient
Dim xRcpAddress As String
Dim xSignatureFile, xSignaturePath As String
Dim xFSO As Scripting.FileSystemObject
Dim xDoc As Document
Dim xFindStr As String
On Error Resume Next
Set xFSO = New Scripting.FileSystemObject
If Item.Class <> olMail Then Exit Sub
Set xMailItem = Item
Set xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
For Each xRecipient In xRecipients
    If xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Then
        xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
    Else
        xRcpAddress = xRecipient.AddressEntry.Address
    End If
    Select Case xRcpAddress
        Case "Email Address 1"
            xSignatureFile = xSignaturePath & "aaa.htm"
            Exit For
        Case "Email Address 2", "Email Address 3"
            xSignatureFile = xSignaturePath & "bbb.htm"
            Exit For
        Case "Email Address 4"
            xSignatureFile = xSignaturePath & "ccc.htm"
            Exit For
    End Select
Next
VBA.DoEvents
Set xDoc = xMailItem.GetInspector.WordEditor
xFindStr = "From: " & xMailItem.Recipients.Item(1).Name & " <" & xRcpAddress & ">"
If VBA.InStr(1, xMailItem.Body, xFindStr) <> 0 Then
    xDoc.Application.Selection.HomeKey Unit:=wdStory, Extend:=wdMove
    With xDoc.Application.Selection.Find
        .ClearFormatting
        .Text = xFindStr
        .Execute Forward:=True
    End With
    With xDoc.Application.Selection
        .MoveLeft wdCharacter, 2
        .InsertParagraphAfter
        .MoveDown Unit:=wdLine, Count:=1
    End With
Else
    With xDoc.Application.Selection
        .EndKey Unit:=wdStory, Extend:=wdMove
        .InsertParagraphAfter
        .MoveDown Unit:=wdLine, Count:=1
    End With
End If
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Link:=False, Attachment:=False
End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai Kristal,

Sama seperti orang lain di utas ini, saya ingin tanda tangan saya menjadi default ke tanda tangan eksternal jika ada alamat email non-internal di baris ke atau cc dan beralih ke tanda tangan internal ketika itu hanya alamat email internal. Untuk melakukannya, saya telah menggabungkan kode terbaru Anda (respons terhadap Lelian) dengan respons Random_Guest ke Daniela (default pada tanda tangan eksternal). Hasilnya adalah ketika saya hanya menanggapi alamat email internal, tanda tangan bekerja dengan sempurna; namun, ketika tanda tangan eksternal saya ditarik, tanda tangan tersebut akan jatuh ke bagian bawah rantai email, bukan ke akhir email yang saya kirim. Bisakah Anda memberi saran bagaimana cara memperbaikinya? Saya telah menyertakan kode di bawah ini:

Private Sub Application_ItemSend (Item ByVal Sebagai Objek, Batalkan Sebagai Boolean)
'Diperbaharui oleh ExtendOffice 2022 / 08 / 01
Redupkan xMailItem Sebagai MailItem
Redupkan xPenerima Sebagai Penerima
Redupkan xPenerima Sebagai Penerima
Redupkan xRcpAddress Sebagai String
Redupkan xSignatureFile, xSignaturePath Sebagai String
Redupkan xFSO Sebagai Scripting.FileSystemObject
Redupkan xDoc Sebagai Dokumen
Redupkan xFindStr Sebagai String
On Error Resume Next
Setel xFSO = Scripting.FileSystemObject Baru
Jika Item.Class <> olMail Kemudian Keluar Sub
Setel xMailItem = Barang
Setel xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
Untuk Setiap xRecipient Dalam xRecipients
Jika xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry Kemudian
xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Lain
xRcpAddress = xRecipient.AddressEntry.Address
End If
Jika VBA.InStr(VBA.LCase(xRcpAddress), "@mycompany'sname") = 0 Kemudian 'Masukkan string dalam tanda kutip ganda. Jika alamat email penerima berisi string ini, tanda tangan "internal.htm" di bawah ini akan ditetapkan ke email. Jika tidak, tetapkan tanda tangan "external.htm".
xSignatureFile = xSignaturePath & "External.htm"
Keluar Untuk
Lain
xSignatureFile = xSignaturePath & "Internal.htm"
End If
Selanjutnya
VBA.DoEvents
Setel xDoc = xMailItem.GetInspector.WordEditor
xFindStr = "Dari: " & xMailItem.Recipients.Item(1).Nama & " <" & xRcpAddress & ">"
Jika VBA.InStr(1, xMailItem.Body, xFindStr) <> 0 Maka
xDoc.Application.Selection.HomeKey Unit:=wdStory, Perpanjang:=wdMove
Dengan xDoc.Application.Selection.Find
.Hapus Pemformatan
.Teks = xFindStr
.Jalankan Teruskan:=Benar
Berakhir dengan
Dengan xDoc.Application.Selection
.MoveLeft wdCharacter, 2
.InsertParagraphAfter
.MoveDown Satuan:=wdLine, Hitung:=1
Berakhir dengan
Lain
Dengan xDoc.Application.Selection
.EndKey Unit:=wdStory, Perluas:=wdMove
.InsertParagraphAfter
.MoveDown Satuan:=wdLine, Hitung:=1
Berakhir dengan
End If
xDoc.Application.Selection.InsertFile FileName:=xSignatureFile, Tautan:=Salah, Lampiran:=Salah
End Sub
Komentar ini diminimalkan oleh moderator di situs
Hai Josh,
Masalah ini agak rumit. Saya perlu waktu untuk menemukan solusi. Hanya tidak mampu menanganinya sekarang. Maaf untuk itu.
Komentar ini diminimalkan oleh moderator di situs
Tidak masalah -- terima kasih telah melihatnya!
Komentar ini diminimalkan oleh moderator di situs
Hai Kristal,

Semoga Anda baik-baik saja.

Bisakah Anda memberi tahu apakah mungkin untuk menambahkan tanda tangan yang berbeda berdasarkan bidang subjek yang memiliki kata-kata tertentu.

Terimakasih banyak
Matt
Komentar ini diminimalkan oleh moderator di situs
Hai Matt Baca,
Terima kasih atas komentarmu. Saya belum bisa menyelesaikan masalah ini.
Komentar ini diminimalkan oleh moderator di situs
Oke terima kasih sudah meluangkan waktunya
Komentar ini diminimalkan oleh moderator di situs
Hai! Saya telah menerapkan kode di sebagian besar berfungsi sebagaimana dimaksud. Namun, sesekali ia menyisipkan tanda tangan di tengah pesan. itu pertama kali terjadi ketika saya menempelkan meja di badan. tanda tangannya dimasukkan ke dalam tabel. Juga, hal itu terjadi sehingga memotong beberapa teks sehingga dua-tiga baris teks berada di akhir surat (setelah tanda tangan). Ini tidak terjadi setiap saat, tetapi saya harap Anda dapat membantu menyelesaikannya sehingga menjadi lebih andal.
Komentar ini diminimalkan oleh moderator di situs
Hai Mikkel Lundsgaard,
Kode berfungsi dengan baik dalam kasus saya. Versi Outlook mana yang Anda gunakan?
Komentar ini diminimalkan oleh moderator di situs
Saya kira itu versi terbaru.
Belum ada komentar yang diposting di sini
Muat Lebih

Ikuti kami

Hak Cipta © 2009 - www.extendoffice.com. | Seluruh hak cipta. Dipersembahkan oleh ExtendOffice. | Peta Situs
Microsoft dan logo Office adalah merek dagang atau merek dagang terdaftar dari Microsoft Corporation di Amerika Serikat dan / atau negara lain.
Dilindungi oleh Sectigo SSL