• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Combineer gemaakte function met bestaande

Status
Niet open voor verdere reacties.

Vexcel

Gebruiker
Lid geworden
3 mei 2015
Berichten
63
Helpmij,
Via onderstaande code wil ik hyperlink een function aanroepen. Bij de uitvoering krijg ik "Cannot open the specified file.". Bij het runnen vanuit VBA Editor werkt de function goed.

In cell C10 staat onderstaande:
Code:
=IF(B10<=TODAY();HYPERLINK("send_email()";"Verzenden"));"")

Gemaakte Function:
Code:
Function send_email()
    
    Set outlook = CreateObject("Outlook.application")
    
    Set email = outlook.CreateItemFromTemplate(ThisWorkbook.Path & "\template.oft")
    email.htmlbody = Replace(email.htmlbody, "[Name]", ActiveCell.Offset(0, -1).Value)
    email.htmlbody = Replace(email.htmlbody, "[Business]", ActiveCell.Offset(0, 3).Value)
    email.to = ActiveCell.Offset(0, 0).Value
    email.subject = ActiveCell.Offset(0, 1).Value
    email.display

End Function

Is de datum verstreken dan wordt de hyperlink "Verzenden" getoont in cel C10 en kan men erop klikken. Anders is het veld leeg. Weet je een oplossing voor het probleem. Mogelijk heb je een veel mooiere oplossing, dan hou ik mij aanbevolen.

Groetjes
 
Dit werkt bij mij in excel2007nl/windows11en.

In C10
Code:
=IF(B10<=TODAY();HYPERLINK("[COLOR=#FF0000]#[/COLOR]send_email()";"Verzenden"));"")

In Module1
Code:
Function send_email()
    [COLOR=#ff0000]Set send_email = Selection[/COLOR]
    Set outlook = CreateObject("Outlook.application")
    Set Email = outlook.CreateItemFromTemplate(ThisWorkbook.Path & "\template.oft")
    Email.htmlbody = Replace(Email.htmlbody, "[Name]", ActiveCell.Offset(0, -1).Value)
    Email.htmlbody = Replace(Email.htmlbody, "[Business]", ActiveCell.Offset(0, 3).Value)
    Email.to = ActiveCell.Offset(0, 0).Value
    Email.Subject = ActiveCell.Offset(0, 1).Value
    Email.display
End Function
Bron: https://stackoverflow.com/questions/28728600/in-excel-can-i-use-a-hyperlink-to-run-vba-macro

Ik weet niet waar je deze code vandaan hebt, maar het is geen gangbare code voor het oplossen van dit probleem.
Wat niet wil zeggen dat het niet werkt.
 
Laatst bewerkt:
Alphamax,
Dank je wel voor je reactie. Ik zal morgen kijken of dit ook bij mij werkt. Om je vraag te beantwoorden, omdat het geen gangbare code is, kwam ik dit een keer tegen op het internet en daar vandaar geplukt. Mocht je een betere optie weten dan hou ik mij aanbevolen. Hetgeen wat ik gebruik heeft tot nadeel dat als je er een kolom tussen plaats of weghaalt de kans groot is dat function aangepast moet worden. Deze oplossing was voor mij goed te volgen. Via dit forum heeft SNB een andere optie geboden. Deze kon ik niet goed volgen. Zie onderstaande:

Code:
Sub send_email()
  sn=activecell.offset(,-1).resize(5)  
  
  with CreateObject("Outlook.application").CreateItemFromTemplate(ThisWorkbook.Path & "\template.oft")
    .htmlbody = Replace(Replace(.htmlbody,"[Name]",sn(1,1)),"[Business]",sn(1,5))
    .to = sn(1,2)
    .subject = sn(1,3)
    .send
  end with
End Sub
 
Ik bedoelde meer het met een hyperlink formule aansturen van een vba functie, dat is niet zo gangbaar.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan