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

Hvordan ændres automatisk signatur baseret på modtagere i Outlook?

Som standard har Outlook en indbygget funktion, som brugerne automatisk kan ændre signatur, mens de sender e-mails via forskellige e-mail-konti. Men ud over det vil jeg her vise dig metode til automatisk ændring af signatur baseret på forskellige modtagere i feltet Til i Outlook.

Skift signatur baseret på modtagere automatisk med VBA-kode


Skift signatur baseret på modtagere automatisk med VBA-kode

Følg nedenstående trin for at anvende forskellige signaturer på tilsvarende modtagere, mens du sender e-mails i Outlook.

1. For det første skal du deaktivere den automatisk vedhæftede signaturfunktion i Outlook. Klik venligst filet > Indstillinger at åbne Outlook Options vindue.

2. i Outlook Options vindue, vælg Post i venstre rude, og klik derefter på Underskrifter knappen i Skriv meddelelser afsnit. Se skærmbillede:

3. i Underskrifter og papirvarer dialogboksen, gå til Vælg standardsignatur afsnit under E-mail underskrift fanen skal du vælge en e-mail-konto i Email konto rullelisten, og vælg derefter (Ingen) fra Nye beskeder og Svar / videresend rullelister. Gentag disse trin, indtil alle e-mail-konti er indstillet til (Ingen). Klik derefter på OK .

Bemærk: Du kan også oprette dine nødvendige underskrifter i dette Underskrifter og papirvarer dialog boks.

4. Klik på OK knappen, når den returnerer Outlook Options vindue.

5. Tryk på andre + F11 nøgler til at åbne Microsoft Visual Basic til applikationer vindue.

6. i Microsoft Visual Basic til applikationer dobbeltklik på vinduet Denne OutlookSession i venstre rude for at åbne kodevinduet og kopien under VBA-koden ind i vinduet. Se skærmbillede:

VBA-kode: Skift automatisk signatur baseret på modtagere i 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

Noter:

  • 1). I VBA-koden skal du udskifte “E-mail-adresse 1/2/3/4”Med modtagerens bestemte e-mail-adresser.
  • 2). "aaa.htm""bbb.htm"Og"ccc.htm" er de angivne signaturer, du vil sende til de tilsvarende modtagere.
  • 3). I dette tilfælde underskrift “aaa”Vil blive sendt til“E-mail-adresse 1", Underskrift "bbb”Vil blive sendt til“E-mail-adresse 2"Og"E-mail-adresse 3", og "E-mail-adresse 4”Modtager e-mailen indlejret med signatur“ccc”. Skift dem ud fra dine behov.
  • 4). Hvis der er flere modtagere i en e-mail, tager koden kun den første modtager i betragtning. I dette tilfælde vil andre modtagere modtage e-mails med samme signatur som den første modtager.

7. Klik derefter på Værktøj > Referencer at gå til Referencer-projekt dialog boks. Kontroller begge i dialogboksen Microsoft Word-objektbibliotek og Microsoft Scripting Runtime indstillinger, og klik derefter på OK knap, se skærmbillede:

8. Tryk på andre + Q taster for at lukke Microsoft Visual Basic til applikationer vindue.

Fra nu af, efter at have skrevet en e-mail og trykket på Send-knappen, indsættes den tilsvarende signatur automatisk i slutningen af ​​e-mail-kroppen baseret på modtagerens e-mail-adresse i feltet Til.


Indsæt automatisk den aktuelle dato som underskrift, når du sender e-mail i Outlook:

Hvis du vil indsætte tidsstempel som signatur i e-mail-kroppen, mens du opretter / besvarer / videresender ny e-mail i din Outlook, kan du aktivere Tilføj datosignatur, når du opretter en ny, svar og videresend e-mail mulighed for Kutools til Outlook at opnå det. Se skærmbillede:
Download og prøv det nu (60-dages gratis trail)


Kutools til Outlook - bringer 100 avancerede funktioner til Outlook, og gør arbejdet meget nemmere!

  • Auto CC / BCC ved regler, når du sender e-mail; Automatisk videresendelse Flere e-mails efter brugerdefineret; Auto svar uden udvekslingsserver og flere automatiske funktioner ...
  • BCC Advarsel - vis besked, når du prøver at besvare alle hvis din e-mail-adresse er på BCC-listen; Påmind, når du mangler vedhæftede filer, og mere minder funktioner ...
  • Svar (alle) med alle vedhæftede filer i mailsamtalen; Besvar mange e-mails på få sekunder Tilføj automatisk hilsen når svar Tilføj dato til emne ...
  • Vedhæftningsværktøjer: Administrer alle vedhæftede filer i alle mails, Automatisk afmontering, Komprimer alle, Omdøb alt, Gem alle ... Hurtig rapport, Tæl valgte mails...
  • Kraftige uønskede e-mails efter skik; Fjern duplikerede mails og kontakter... Gør dig i stand til at gøre smartere, hurtigere og bedre i Outlook.
shot kutools outlook kutools fane 1180x121
shot kutools outlook kutools plus fane 1180x121
 
Sorter kommentarer efter
Kommentarer (31)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan ville dette opføre sig, hvis der er flere modtagere?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Devansh,
Hvis der er flere modtagere i en e-mail, virker koden kun for den første. Og alle modtagere vil modtage e-mailen med den samme signatur, der er angivet til den pågældende person.
Hvis du ønsker at indsætte forskellige signaturer, når der er flere modtagere, skal e-mailen sendes separat til forskellige modtagere. Og det vil kræve en anden kode for at opnå.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej! Meget flot script, men der er et problem når man sender til udvekslingsadresser, xRcpAddressen returnerer X400-navnet ikke smtp-adressen, dette gør det umuligt at vælge baseret på domæne. Er der en løsning på dette?


Bare for at forbedre har jeg ændret sagserklæringen til, hvis jeg bruger inStr-funktionen til at skelne e-mails i bulk

Hvis InStr(xRcpAddress, "@eksempel") Så
xSignatureFile = xSignaturePath & "aaa.htm"
End If
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg tilføjede dette smarte script til Outlook 2013, og det identificerer og vælger korrekt de forskellige e-mail-signaturer, jeg bruger.

Jeg har et problem med en af ​​grafikken, der er en del af en signatur. I stedet for at grafikken vises, viser mappen "Sendte elementer" (og modtageren) e-mailen med det vedhæftede skærmbillede, og forsøget på at downloade billedet virker ikke.

Hvis jeg deaktiverer scriptet og underskriver manuelt, så er den udgående e-mail korrekt, og modtageren får, hvad jeg har til hensigt. Endnu mere interessant er det, at med en anden enklere signatur, hvor grafikken kun er en lige linje, er dette inkluderet, selvom grafikken er ændret lidt.

Grafikken er en PNG-fil 80KB 5904 x 1024 pixels med en bitdybde på 32, og jeg har prøvet mindre størrelser ned til 10KB 369 x 64 pixels, hvilket ikke har hjulpet. Min Outlook-version er 15.0.5189.1000 32Bit Professional Plus 2013 på en Windows 10 Pro-platform.

Mon ikke du kan foreslå en løsning på dette.
Denne kommentar blev minimeret af moderatoren på webstedet
Kære Amanda,
Vi har opdateret koden. Tak, fordi du mindede mig om fejlen.
Denne kommentar blev minimeret af moderatoren på webstedet
Meget flot script, men billedfilerne i min signatur er ikke leveret rigtigt. Kan du løse dette problem?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Vysakh,
Koden er blevet opdateret, og billedproblemet er løst nu. Beklager ulejligheden.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal,

hvad ændrede du for at løse billedproblemet? Jeg bruger din seneste kode, og jeg har det samme problem som Amanda.
Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,
Beklager fejlen. VBA'en er blevet opdateret igen, og billedproblemet er fuldstændig løst nu.
Denne kommentar blev minimeret af moderatoren på webstedet
Udover koden er betjeningen af ​​trin 7 også ændret. Følg venligst instruktionerne trin for trin for at få det ned.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, jeg vil gerne anvende dette til at skelne signaturer ved afsendelse af interne og eksterne e-mails. Derfor i stedet for at genkende specifikke e-mailadresser, skulle jeg bare skelne efter modtagerens e-mailadresse, der indeholder mit firmas navn eller ej. Kan du fortælle mig, hvordan koden ville være for dette specifikke tilfælde?


(For eksempel hvis jeg ønskede at underskrive med signaturen "intern.htm", når modtagerens e-mail indeholder strengen "microsoft" og signaturen "external.htm", hvis den ikke indeholder strengen "microsoft". I dette tilfælde adresser som ' jane@microsoft.com', 'tom@microsoft.support.com' og 'recruiting@microsoft.europe.com' vil alle blive betragtet som de interne modtagere for en Microsoft-medarbejder).

Tak!!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej pauli,
Prøv venligst nedenstående kode. Før du anvender koden, skal du gå til Referencer dialog for at kontrollere Microsoft Word-objektbibliotek boks (som det vedhæftede billede vist).

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

'Opdateret af ExtendOffice 2020 / 6 / 12

Dæmp xMailItem Som MailItem

Dim xRecipients As Recipients

Dim xRecipient Som Modtager

Dim xRcpAddress Som streng

Dim xSignatureFile, xSignaturePath As String

Dim xFSO Som Scripting.FileSystemObject

Dim xDoc som dokument

On Error Resume Next

Indstil xFSO = New Scripting.FileSystemObject

Hvis Item.Class <> olMail Afslut Sub

Indstil xMailItem = Item

Indstil xRecipients = xMailItem.Recipients

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

For hver xRecipient I xRecipients

Hvis xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry, så

xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress

Else

xRcpAddress = xRecipient.AddressEntry.Address

End If

Hvis VBA.InStr(VBA.LCase(xRcpAddress), "@microsoft") > 0 Derefter 'Indtast strengen i de dobbelte anførselstegn. Hvis modtagerens e-mailadresse indeholder denne streng, tildeles nedenstående signatur "intern.htm" til e-mailen. Ellers tildel signaturen "external.htm".

xSignatureFile = xSignaturePath & "interne.htm"

Afslut til

Else

xSignatureFile = xSignaturePath & "ekstern.htm"

End If

Næste

VBA.DoEvents

Indstil 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
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, Crystal, jeg har et spørgsmål. Når jeg sender e-mails til både eksterne og interne modtagere, hvordan kan jeg få det til at differentiere ved at vælge altid ekstern signatur? Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Du har måske fundet løsningen for dig selv nu eller har forladt denne tråd for længe siden, men jeg føler en trang til at afslutte dette nu. Det enkle svar på dette spørgsmål:
Rediger If-Else-klausulen (der skelner mellem de to signaturer) til følgende:
Hvis VBA.InStr(VBA.LCase(xRcpAddress), "@microsoft") = 0 Så 'Indtast strengen i de dobbelte anførselstegn. Hvis modtagerens e-mailadresse indeholder denne streng, vil underskriften "internal.htm" blive tildelt e-mailen. Ellers tildel signaturen "ekstern.htm".
xSignatureFile = xSignaturePath & "external.htm"
Afslut til
Else
xSignatureFile = xSignaturePath & "internal.htm"
End If

Hvad sker der nu:
Hvis modtageradressen fra en liste over modtageradresser IKKE indeholder den givne streng, skal du bruge den eksterne signatur og stoppe med at se på yderligere modtagere. Ellers brug den interne signatur og se efter den næste modtageradresse.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har en mærkelig adfærd med VBA-genererede Outlook-e-mails. Signaturen tilføjes til e-mailen efter hensigten, men ikke placeret i bunden af ​​e-mailen, men derimod i midten (ser ud som ved den første tomme plads). Nogen idé om hvorfor og hvordan man kan overvinde det?
Denne kommentar blev minimeret af moderatoren på webstedet
Tim jeg har samme problem. Der hvor brugeren klikker sidst, er billedet indsat. Er der nogen der har en måde at tvinge billedet lige over signaturen?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal,
Jeg er interesseret i den VBA-kode, du skrev til "pauli" nedenfor, men når jeg kører den, genereres følgende fejl (og kodelinjen "XDoc som dokument" er fremhævet):
"Kompileringsfejl: Brugerdefineret type ikke defineret"
Hvordan kan jeg løse dette problem venligst?

Tak, Tim
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal,

Jeg er interesseret i den VBA-kode, du skrev til "pauli" nedenfor, men når jeg kører den, genereres følgende fejl (og kodelinjen "XDoc som dokument" er fremhævet):

"Kompileringsfejl: Brugerdefineret type ikke defineret"

Hvordan kan jeg løse dette problem venligst?

Tak!
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Tim, Før du anvender koden, skal du gå til dialogboksen Referencer for at kontrollere Microsoft Word-objektbibliotek boks (som det vedhæftede billede vist).
Denne kommentar blev minimeret af moderatoren på webstedet
Fantastisk manuskript. Tak. Enhver måde at indsætte signaturen på, før du trykker på send til forhåndsvisning. Jeg ved, at jeg kan udsætte afsendelsen og se den i udbakken. I øjeblikket vises det ikke, før jeg trykker på send. Hvis ikke, er der nogen software, der automatisk tildeler en signatur baseret på Kontakt. Vi har brugt et program i mange år, der fungerede godt, men det virker ikke i nye versioner af Outlook.
Denne kommentar blev minimeret af moderatoren på webstedet
Dette script er fantastisk og funktionelt til det, jeg ledte efter. Er det muligt at få koden til at skelne om beskeden er ny eller et svar samt e-mail-domænet? For eksempel yderligere at vælge en separat signatur for svar til eksterne modtagere kontra en ny besked til eksterne modtagere?
Tak for deling.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Seth, Koden nedenfor skelner mellem, om beskeden er ny eller et svar for at indsætte en signatur. Du skal manuelt ændre "Email adresse"Og"Svar e-mail-adresse" og de tilsvarende signaturnavne i koden.
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
'Opdateret af ExtendOffice 2020 / 12 / 24
Dæmp xMailItem Som MailItem
Dim xRecipients As Recipients
Dim xRecipient Som Modtager
Dim xRcpAddress Som streng
Dim xSignatureFile, xSignaturePath As String
Dim xFSO Som Scripting.FileSystemObject
Dim xDoc som dokument
On Error Resume Next
Indstil xFSO = New Scripting.FileSystemObject
Hvis Item.Class <> olMail Afslut Sub
Indstil xMailItem = Item
Indstil xRecipients = xMailItem.Recipients
xSignaturePath = CreateObject("WScript.Shell").SpecialFolders(5) + "\Microsoft\Signatures\"
Hvis InStr(xMailItem.Subject, "RE: ") <> 1 Så
For hver xRecipient I xRecipients
Hvis xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry, så
xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Else
xRcpAddress = xRecipient.AddressEntry.Address
End If
Vælg Case xRcpAddress
Sag "E-mail-adresse 1"
xSignatureFile = xSignaturePath & "aaa.htm"
Afslut til
Sag "E-mail-adresse 2""E-mail-adresse 3"
xSignatureFile = xSignaturePath & "bbb.htm"
Afslut til
Sag "E-mail-adresse 4"
xSignatureFile = xSignaturePath & "ccc.htm"
Afslut til
Afslut Vælg
Næste
Else
For hver xRecipient I xRecipients
Hvis xRecipient.AddressEntry.AddressEntryUserType = olExchangeUserAddressEntry, så
xRcpAddress = xRecipient.AddressEntry.GetExchangeUser.PrimarySmtpAddress
Else
xRcpAddress = xRecipient.AddressEntry.Address
End If
Vælg Case xRcpAddress
Sag "b"
xSignatureFile = xSignaturePath & "111.htm" '111.htm er navnet på den signatur, du vil indsætte, når du svarer på "Svar e-mailadresse 1"
Afslut til
Sag "Svar e-mailadresse 2""Svar e-mailadresse 3"
xSignatureFile = xSignaturePath & "222.htm"
Afslut til
Sag "Svar e-mailadresse 4"
xSignatureFile = xSignaturePath & "333.htm"
Afslut til
Afslut Vælg
Næste
End If
VBA.DoEvents
Indstil 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
Denne kommentar blev minimeret af moderatoren på webstedet
Denne kode fungerede for mig, indtil jeg genstartede min pc. Når jeg åbner alt+F11 igen, er al koden stadig på det samme sted, men når jeg sender en e-mail, sender den den bare uden signatur og uden at udstede nogen slags af advarselsmeddelelse.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Ivan, Problemet skyldes, at Excel deaktiverer Makro-indstillingen. Du skal komme ind i vinduet Outlook-indstillinger ved at klikke filet > Indstillinger. I Outlook Options vindue, skal du klikke på Trust Center i venstre rude, og klik derefter på Indstillinger for tillidscenter knap. I Trust Center vindue, skal du klikke på Makroindstillinger i venstre rude, og vælg derefter Aktivér alle makroer alternativknappen og tjek Anvend makrosikkerhedsindstillinger på installerede tilføjelser boks. Se det vedhæftede skærmbillede nedenfor.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal,
Jeg har et spørgsmål om kildekoden nedenfor.
Jeg vil kun sende en intern signatur til visse e-mail-modtagere (30), så snart en anden e-mailadresse tilføjes, skal den eksterne signatur bruges.
Kan du hjælpe mig med min anmodning?
Mange tak på forhånd.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har flere e-mail-konti opsat på Outlook og har dit script opsat til at e-maile forskellige signaturer til de interne og eksterne e-mails.

Hvordan kan jeg ændre scriptet, så det kun sender disse signaturer, hvis jeg sender fra jweaver@andrewslogistics.com?

Med andre ord, jeg ønsker ikke at sende disse signaturer, når jeg sender fra en anden e-mailadresse end jweaver@andrewslogistics.com.

Tak,
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Jeff Weaver,
Følgende VBA-kode er blevet ændret til at indsætte disse signaturer, når du kun sender e-mails fra en specificeret e-mail-konto. Prøv det. håber jeg kan hjælpe.
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
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Crystal - Jeg har også det samme problem som Tim (#33997) og Greg (#34358) nævnt ovenfor, men kan ikke se en løsning. Signaturen vises i min e-mail på det sidste sted, jeg klikker, før jeg trykker på 'send', og kommer således ofte frem i midten af ​​e-mailen. Nogen hjælp/løsninger?

Tak!

Eric
Denne kommentar blev minimeret af moderatoren på webstedet
Hej Erik Andersen,
Tak for din feedback. Koden er nu blevet opdateret, og problemet er løst. Prøv det.
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
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

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 message à moi.

Har du en løsning?

Lélian
Denne kommentar blev minimeret af moderatoren på webstedet
Hej LÉLIAN ALEMPS.
VBA-koden er blevet opdateret. Tak for din feedback. Prøv det.

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
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder