[VBA] E-Mail met HTML en Variables

Pagina: 1
Acties:
  • 327 views sinds 30-01-2008
  • Reageer

  • Tjirp
  • Registratie: Mei 2005
  • Laatst online: 02-01-2023
Ook ik ben voor het werk bezig met een stukje script om het leven makkelijker te maken.
Het script zal ingevoerde gegevens in een Userform opslaan in Excel en meteen een e-mail versturen naar persoon X.

Ik werk als systeem beheerder in een klein kantoor en wil op deze manier de registratie van incidenten versnellen en verduidelijken voor mijn collega's.

De bedoeling is:
Klant stuurt e-mail met probleem.
Ik maak een incident aan met gegevens.
VB stuurt automatisch een e-mail naar klant.

Nu loop ik tegen 1 probleem aan, ik wil mijn collega's in het mailtje erop attenderen dat ze meer informatie kunnen vinden in Document X. Document X wil ik dan als hyperlink hebben en niet als volledige tekst (hier ipv. http://www.google.nl).

Het probleem waar ik nu voor sta:
Met een HTMLBody kan ik geen variable gebruiken als ik HTML tags gebruik voor de link (.HTMLBody = Variable 1 + <HTML><BODY><A href=""www.google.nl"">hier</A></Body><HTML> + "Heel veel informatie" + Variable2.

Zonder een HTML body lukt het mij niet om de link te plaatsen.
Als ik het op bovenstaande manier probeer krijg ik alleen de link en niks wat buiten de tags staat. Variable binnen deze tags komen naar voren als text. Als ik alleen Variable gebruik en geen tags krijgt ik wel de variable maar kan ik weer geen hyperlink maken.

Nu dan, de code: Deze code staat in de userform genaamt "Newinc", de betreffende code staat onder CmdOk_Click.

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub cmdOk_Click()
   Range("B4").Select
   'Vind en Selecteer de eerste lege lijn.
   Do While ActiveCell = "" = False
        ActiveCell.Offset(1, 0).Select
   Loop
   'Voeg de waarde aangegeven in de userform toe aan het Excel document op 1 lijn.
     ActiveCell.Value = TextInc
     ActiveCell.Offset(0, 1).Select 'Stapje naar rechts
     ActiveCell.Value = TextAanmelder
     ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = TextOnd
     ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = Format(TextAanmDatum, DD - MM - YYYY) 'Zorgt ervoor dat de date format klopt en geen rare dingen doet (zoals MM - DD - YYYY)
     ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = Format(TextADAD, DD - MM - YYYY)
     ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = "Nee"
     ActiveCell.Offset(0, 1).Select
     ActiveCell.Value = TextOpmerkingen

     If ListBoxMail.Selected(0) = True Then 'Controleer of "Ja" is geselecteerd in de listbox of er een mail verstuurd moet worden
    Dim OlApp         As Object
    Dim OlMail        As Object

    Set OlApp = CreateObject("Outlook.Application")
    Set OlMail = OlApp.createitem(olmailitem)

    OlMail.Recipients.Add TextAanmelder 'Aan
    OlMail.Subject = TextOnd 'Onderwerp
   


De fout komt hier. Ik zal 3 gebruikte voorbeelden geven.
Voorbeeld 1
Visual Basic:
1
2
 OlMail.HTMLBody =  TextInc + "<HTML><Body><A href=""www.somemoretesting.com"">Some</A></BODY></HTML>" + "Tekst tekst" + TextOnd
    

'HTML Body met Tags. De Variable TextInc en TextOnd en ook de Tekst "Tekst Tekst" Komen niet voor in de mail

'Voorbeeld 2
Visual Basic:
1
2
3
  
OlMail.HTMLBody = TextInc 
  

'Op deze manier zie ik wel de waarde van de variable TextInc maar kan ik geen hyperlink maken.

'Voorbeeld3
Visual Basic:
1
  olMail.Body = TextInc + "Tekst Tekst" + <A href=""www.somemoretesting.com"">Some</A>

'Ook hier werkt de Tekst en de variable wel, maar de HTML Tags niet.(Als ik hier "'s gebruik word het tekst en werkt het ook niet.


Vervolg:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    OlMail.Display 'Ben nog druk aan het testen dus hoeft er niets verstuurd te worden.
  End If

  Unload Newinc
End Sub

Private Sub cmdCancel_Click()
  Unload Newinc
End Sub


Private Sub Userform_Initialize() 'Voeg waardes toe in tekstveld ADAD en AanmDatum
x = Date
Y = DateAdd("d", 5, Date)
TextADAD.Value = Y
TextAanmDatum.Value = x
With ListBoxMail 'Voeg Waardes "Ja"  en "Nee"  toe aan de listbox
 .AddItem "Yes"
 .AddItem "No"
End With
End Sub


Ik hoop natuurlijk dat jullie mijn codes snappen, ik heb er comments bijgezet om het hopelijk wat duidelijker te maken. Ik heb overal op het internet gezocht maar kan helaas niks vinden die dit voor mij zal oplossen, de oplossingen die er zijn zijn voornamelijk voor standaard e-mailtjes met een standaard tekst, maar omdat ik variables wil gebruiken in de Body kan ik die niet gebruiken.

Wat ik eigenlijk dus zoek is of een optie om in de .HTMLBody Variables te gebruiken naast de HTML Tags. of in .Body gewoon een hyperlink te kunnen plaatsen.

  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 04-03 17:36

CoRrRan

Don't Panic!!!

Misschien heb je wat aan de volgende link:
http://www.outlookcode.com/codedetail.aspx?id=24

Snel voorbeeldje:
Visual Basic:
1
2
3
4
5
6
7
  Dim strNew As String
  Dim strTest1 As String, strTest2 As String
  strTest1 = "Testje1": strTest2 = "Testje2"

  strNew = "<HTML><BODY>" & strTest1 & "<a href=""http://www.google.com"">linkie</a>" & strTest2 & "</BODY></HTML>"

  OlMail.HTMLBody = strNew

edit:
Ik zie zelfs in de link die ik geef dat je niet eens "<HTML><BODY>" en "</BODY></HTML>" hoeft te gebruiken. Dus dit moet voldoende zijn:
Visual Basic:
1
strNew = strTest1 & "<a href=""http://www.google.com"">linkie</a>" & strTest2

[ Voor 25% gewijzigd door CoRrRan op 12-12-2007 12:14 ]

-- == Alta Alatis Patent == --


  • Tjirp
  • Registratie: Mei 2005
  • Laatst online: 02-01-2023
Top!

En daar ben je dan al 2 dagen druk mee,

ik moet toegeven die link had ik al gezien maar omdat ik weinig overeenkomsten zag met mijn stukje code heb ik hem links laten liggen.

Helemaal super!

  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 04-03 17:36

CoRrRan

Don't Panic!!!

Tjirp schreef op woensdag 12 december 2007 @ 12:21:
Top!

En daar ben je dan al 2 dagen druk mee,

ik moet toegeven die link had ik al gezien maar omdat ik weinig overeenkomsten zag met mijn stukje code heb ik hem links laten liggen.

Helemaal super!
Op naar het volgende probleem! ;)

'k Ben blij dat je weer verder kunt in ieder geval.

-- == Alta Alatis Patent == --