Ga naar inhoud

Macro in Word e-mail veld Subject


Aanbevolen berichten

Ik voeg me af of iemand weet hoe ik doormiddel van een macro te runnen een tekst in het veld Subject kan krijgen. Dan gebruik ik wordt en dan dan klik ik op File - send to - Mail Recipient, dan krijg ik de extra e-mail velden er bij en dan wil ik de macro laten draaien. en dan zou ik graag willen dat er een tekest in Subject komt te staan. Ik heb al enige dingen op internet lopen zoeken en in de help van de VB Editor maar kan hier niets over vinden wat zou werken. Heeft iemand hier een voorbeeld van? of een website waar dit soort dingen als voorbeeld staan. Of kan dit gewoon niet? Al vast bedankt voor de reactie.
Link naar reactie
Met File - Send to verstuur je het huidige bestand als attachment in een voor de rest leeg mailtje met als subject: Documenttitel. Ik heb een voorbeeld hoe je dat met vba kan doen. Moet je het bovenste gedeelte op die pagina gebruiken (Activedocument.HasRoutingSlip) wat dan niet helemaal hetzelfde is (Naar circulatielijst vernzend ipv Naar e-mailadres verzenden) maar wat op zich hetzelfde doet: [url=http://www.paulsnip.nl/content/voorbeelden.asp?action=item&id=1645&grp=]E-mail versturen[/url]
Link naar reactie
Paulus, bedankt voor je reactie, alleen ben ik nog niet helemaal verder gekomen met behulp van jou script voorbeeld. in jou script zit bijvoorbeeld dat de mail direct doorgezet wordt wat voor mij niet helemaal de bedoeling is. ik kreeg het ook niet voor elkaar om jou script zo om te zetten dat de mail niet gestuurd werd maar alleen het onderwerp neer zette. ik kan wel tekest in de body zetten hier onder het script: Sub Subject_name() Selection.TypeText Text:="test" End Sub Dit script zet het in de body Ik heb al het een en ander aan te passen naar bijvoorbeeld Subject in plaats van Text maar dit gaat dan niet helemaal goed.
Link naar reactie
Ik zie dat je met SendKeys denk ik wel een eind komt. Daarmee stuur je toetsaanslagen naar de toepassing, dus als je in 1 macro de mailheader opent (ActiveWindow.EnvelopeVisible instellen) en dan met SendKeys stuurt: tab+tab+"onderwerp" dan staat "onderwerp" in de onderwerpregel: [code:1:d55374fc4a] ActiveWindow.EnvelopeVisible = Not ActiveWindow.EnvelopeVisible SendKeys "{TAB}{TAB}ppp" [/code:1:d55374fc4a] Bovenstaande werkt alleen als de enveloppe dus nog niet actief is, anders wordt ie nl. weer verborgen, en als ie verborgen is, maar wel al bestaat, dan wordt krijgt ie bij weergeven niet de focus, dus werkt sendkeys weer niet naar behoren. Je moet dan dus niet in het document zelf met de hand op File - send to - Mail Recipient klikken en daarna de macro runnen, maar alleen de macro runnen. Ik zou gewoon voor een alternatief kiezen, maar je hebt nu wel een antwoord op "Hoe kan ik het onderwerp invullen" :-)
Link naar reactie
Bedankt, ik denk dat ik hier wel aardig mee uit de voeten kan! dit is idd wel een oplossing.. Maar mocht je nog een andere hebben, dan hou ik me aanbevolen want wat het eninge nadeel is, is: als nou het veld FROM of BCC er ook nog bij staan, dan kloppen de tab's niet meer :roll: na ja, dit is in iedergeval al wel een oplossing dus bedankt daarvoor. Ik ga zelf ook nog verder het een en ander proberen en als dat niet lukt dan gebuikt ik deze mannier. Groet, Mark
Link naar reactie
Ok, dit probleem heeft me zodanig geintrigeerd, dat ik er een tijd mee bezig ben geweest, maar volgens mij heb ik een oplossing voor je. Maak een nieuwe VBA procedure, in je normal.dot of in het document. Als je de procedure in je normal.dot maakt, geldt deze dus voor vrijwel alle documenten. Geef deze procedure afhankelijk van de taalversie van Word de volgende naam: [code:1:1c15f24eb9]Public Sub BestandBerichtVerzenden() End Sub [/code:1:1c15f24eb9] voor de Nederlandstalige Word, of [code:1:1c15f24eb9]Public Sub FileSendMail() End Sub [/code:1:1c15f24eb9] voor de Engelstalige Word. Maak een referentie naar het Outlook Objectmodel (Extra -> Verwijzingen, of Tools -> References) en voeg onderstaande code in (taalonafhankelijk): [code:1:1c15f24eb9] ' Voor de Nederlandstalige Word Public Sub BestandBerichtVerzenden() Dim olApp As Outlook.Application Dim olMailMessage As MailItem If ActiveDocument.Path = "" Then MsgBox "Sla het bestand eerst op voordat je probeert te verzenden" Exit Sub End If Set olApp = New Outlook.Application Set olMailMessage = olApp.CreateItem(olMailItem) olMailMessage.Attachments.Add ActiveDocument.FullName olMailMessage.Subject = InputBox("Onderwerp") olMailMessage.Display End Sub [/code:1:1c15f24eb9] Wat gebeurt er nu? Doordat je de aangegeven naam voor de procedure gebruikt, wordt de code voor Bestand -> Verzenden naar -> Email-adres (bijlage) vervangen door bovenstaande code. Op deze manier kun je dus je eigen code laten uitvoeren in plaats van de standaard Word functionaliteit. Als je dus nu het document via het menu gaat verzenden, wordt er een MailItem gemaakt, met je document als attachment. Tot zover is er niks anders. Maar dan komt het mooie: je kan de eigenschappen van het MailItem aanpassen, waaronder het Subject. Die vul je door middel van de Inputbox. Zo zou je ook de ontvanger al kunnen invullen. Pas daarna wordt het mailbericht getoond, [i:1c15f24eb9]met[/i:1c15f24eb9] je eigen subject, en het document als attachment. De enige voorwaarde voor het correct draaien van deze procedure is dat het document al een keer is opgeslagen, maar dat wordt gecontroleerd door de regels [code:1:1c15f24eb9] If ActiveDocument.Path = "" Then MsgBox "Sla het bestand eerst op voordat je probeert te verzenden" Exit Sub End If [/code:1:1c15f24eb9] Er is tenslotte wel een klein nadeel aan deze methode: omdat je op de achtergrond Outlook aan het aanroepen bent, treedt de beveiliging van Outlook wel in werking, en moet je eventueel toestemming geven om door te gaan.
Link naar reactie
Bedankt voor je reactie/tijd Meneer Ed, Het script werkt, ik heb alleen een aantal dingetjes van het script aangepast. in mijn geval open ik een nieuwe e-mail vanuit outlook en gebruik word als e-mail editor. Vanuit het e-mail bericht start ik de macro. Wat nu alleen nog "fout gaat" is dat er een nieuw document geopend wordt en ik zou willen dat het subject gevuld wordt in het huidige active document (niet in een nieuw document). Hier onder het script zoals ik hem tot nu toe heb. --------------------------------------------------------- Public Sub FileSendMail1() Dim olApp As Outlook.Application Dim olMailMessage As MailItem Set olApp = Outlook.Application Set olMailMessage = olApp.CreateItem(olMailItem) olMailMessage.Subject = "Dit is een test" olMailMessage.Display End Sub ---------------------------------------- ik heb het een en ander geprobeerd en het het idee dat het in deze: olApp.CreateItem(olMailItem) Regel zou moeten zitten alleen ben ik er nog niet achter hoe...
Link naar reactie
Ik begrijp niet meer zo goed wat het probleem is. Je maakt een nieuw mailbericht, en wil daarin gelijk het subject plaatsen? Als dat zo is, gaat handmatig vullen nog het snelst. Het is een leuke oefening, daar niet van, maar wel een beetje overbodig, denk ik zo. Leg anders stap voor stap uit wat je precies wil. Dan kijk ik er nog eens naar.
Link naar reactie
Ik gebruik WORD als mail editor dus als ik vanuit outlook een nieuwe mail open, dan wordt WORD gestart. Ik heb een programma wat disclaimers onder de mail plakt het programma heeft een soort filter die kijkt naar woorden wat er in de subject staat en dan zet hij er een bepaalde disclaimer onder. Aangezien ik meerdere disclaimers heb wil ik er knoppen voor maken die verschillende woorden in het subject kunnen zetten.
Link naar reactie
ik heb iets gevonden in een van de andere berichten (Bericht nr: 469) With ActiveDocument.MailEnvelope.Item .Recipients.Add "mail@iemand.nl" .Subject = "vul een onderwerp in" .Send End With Dit schript heb ik aangepast naar Sub Disclaimer() With ActiveDocument.MailEnvelope.Item .Subject = "test" End With End Sub En dat werkt!! :P Nu moet ik alleen nog iets bedenken, wanneer ik een Replay op een mail wil doen dan staat er al tekst in het onderwerp en dat wil ik dan behouden. Iets van: Sub Disclaimer() With ActiveDocument.MailEnvelope.Item .Subject = %subject% + "test" End With End Sub
Link naar reactie
[quote:591d5d3867="markvanharten"] Nu moet ik alleen nog iets bedenken, wanneer ik een Replay op een mail wil doen dan staat er al tekst in het onderwerp en dat wil ik dan behouden. Iets van: Sub Disclaimer() With ActiveDocument.MailEnvelope.Item .Subject = %subject% + "test" End With End Sub[/quote:591d5d3867] Die is makkelijk ;): [code:1:591d5d3867] .Subject = .Subject & " andere tekst" [/code:1:591d5d3867]
Link naar reactie
Ik heb weer een nieuwe uitdaging gevonden. Ik probeer in het subject van de mail te kijken voor ik bijvoorbeeld een replay doe. Als er in het onderwerp een bepaald woord staat, dan moet er een bepaald wordt bijgezet worden of anders een andere. dit is mijn script tot nu toe: Sub Disclaimer_test() With ActiveDocument.MailEnvelope.Item If .Subject Like %"VLAG"% Then .Subject = .Subject & "GOED!!" Else .Subject = .Subject & "FOUT!!" End If End With End Sub de regel "If .Subject Like %"VLAG"% Then" gaat het nog niet helemaal goed. In dit geval wil ik dus als het woord "VLAG" in het onderwerp staat dan dient er het woord GOED bij gezet te worden. Als er bijvoorbeeld staat Subject: "Hallo ik heb een VLAG vandaag" dan zou dit aangepast moeten worden naar "Hallo ik heb een VLAG vandaag GOED!!" hebben jullie een surgestie?
Link naar reactie
[quote:b10fc3e7dd="markvanharten"]Ik probeer in het subject van de mail te kijken voor ik bijvoorbeeld een replay doe. Als er in het onderwerp een bepaald woord staat, dan moet er een bepaald wordt bijgezet worden of anders een andere. [/quote:b10fc3e7dd] VBA kent LIKE niet, maar wel INSTR. Deze geeft een integer waarde terug, en wel de positie van de gezochte term/letter. Voorbeeld:[code:1:b10fc3e7dd]If InStr(1, .Subject, "VLAG", vbTextCompare) Then[/code:1:b10fc3e7dd]Uitleg: de eerste parameter (1) is de positie van waaraf gezocht moet worden, de tweede is de tekst waarin gezocht wordt, de derde is de zoekstring, en de vierde (vbTextCompare) zorgt ervoor dat de zoekactie case insensitive wordt uitgevoerd. Zowel "vlag" als "Vlag" of "VLAG" wordt gevonden. Als de zoekstring niet gevonden wordt, is het resultaat van de functie 0, en treedt de eventuele ELSE in werking. Succes maar weer.
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...