• 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.

Hyperlink toevoegen aan een cel

Status
Niet open voor verdere reacties.

Evelthoven

Gebruiker
Lid geworden
26 sep 2006
Berichten
690
Goedemorgen,

Ik weet dat het mogelijk is om hyperlinks toe te voegen, maar is het mogelijk om aan een bepaalde cel een hyperlink toe te voegen die verwijst naar een verstuurde mail in Microsoft Outlook 2003 ?
Zo ja, dan zou ik graag weten hoe dit dan ingesteld moet worden.

Alvast bedankt voor de reactie(s)

Groeten,
Eric
 
Beste Eric,

Doe's Cntrl+K en klik dan eens op de verschillende ikoontjes. Allicht dat je 'm vindt.

Richjard
 
Bedankt voor de reactie.
Heb deze mogelijkheden al eerder via CTRL+K geprobeerd, maar dit is niet mogelijk.
Had nl. gekeken naar de plaats waarin de pst-bestanden staan. Je kunt wel verwijzen naar de map Outlook (onder Mijn Documenten), maar dit gaat niet. *.pst wordt niet herkend en bovendien wil ik naar een bepaalde mail in deze map kunnen verwijzen.
Hopelijk heb ik nu mijn vraag hiermee wat verduidelijkt.

Eric
 
Ik weet hoegenaamd niet of het mogelijk is (en hoe :o), maar ik vermoed dat de enige manier zal zijn om te programmeren in Excel VBA en/of Outlook VBA. Niet echt simpel dus als je het mij vraagt...

Wigi
 
Wigi,

Jammer dat het wellicht niet mogelijk is, maar toch bedankt voor je reactie.

Gr.
Eric
 
Ik heb eens snel gekeken naar deze vraag, want om één of andere manier intrigeert ze me wel :)

Nu ik ken eigenlijk niets van Outlook, ttz ik kan er mijn mails mee lezen en agenda mee beheren maar dat is het dan ook. Ik heb geen idee van het object model dat er achter zit.

Na wat googlen heb ik volgende code samengesteld (samenraapsel van her en der), deze zal ver van efficient (langs Outlook kant bekeken) en komt niet helemaal tegemoet aan je wensen, maar misschien kan je er iets mee.

Voor zo ver ik in een half uurke googlen heb ontdekt, wordt elk mail item uniek aangeduid door een entryid. Maar die verschilt naargelang de map waar de mail instaat. Maar goed volgende code geeft op een Excel sheet een overzchit van die entryid, ontvangsttijd en onderwerp van de mails in de inbox:

Code:
Sub GetFromInbox()

    Dim olApp As Outlook.Application
    Dim olNs As Namespace
    Dim Fldr As MAPIFolder
    Dim olmail As Variant
    Dim i As Integer
    Dim ZoekWaarde As String
    
    Set olApp = New Outlook.Application
    Set olNs = olApp.GetNamespace("MAPI")
    Set Fldr = olNs.GetDefaultFolder(olFolderInbox)
    i = 1

    ZoekWaarde = "helpmij" 'voorbeeld, hier veranderen
    For Each olmail In Fldr.Items
             If InStr(olmail.Body, ZoekWaarde) > 0 Or InStr(olmail.Subject, ZoekWaarde) > 0 Then

                
                   ActiveSheet.Cells(i, 1).Value = olmail.EntryID
                   ActiveSheet.Cells(i, 2).Value = olmail.ReceivedTime
                   ActiveSheet.Cells(i, 3).Value = olmail.Subject
                
                i = i + 1
            End If
    Next olmail

    Set Fldr = Nothing
    Set olNs = Nothing
    Set olApp = Nothing


End Sub

Aangezien ik hier early-binding heb gebruikt moet je ook de verwijzing naar Microsoft Outlook 11.0 Object Library aanduiden.

In volgende code kan je een entryID kiezen en die bijhorende mail wordt dan geopend. Spijtig genoeg heb ik niet iets gevonden dat de conversie entry-id naar bijhorend mailitem doet, vandaar de loop door alle mail items op zoek naar het gezochte entry-id;

Code:
Sub DisplayMail()
Dim olApp As Outlook.Application
Dim olNs As Namespace
Dim Fldr As MAPIFolder
Dim olmail As Variant
Dim itemID As Variant

   
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace("MAPI")
Set Fldr = olNs.GetDefaultFolder(olFolderInbox)

    itemID = Cells(25, 1) 'geef hier aan welk entry-id je wilt weergeven
    
    For Each olmail In Fldr.Items
        If olmail.EntryID = itemID Then
            Set myitem = olmail
            Exit For
        End If
    Next
    myitem.Display
End Sub

Zoals ik zei is dit nog niet helemaal wat je voor ogen had, maar misschien dat iemand met meer kennis van het outlook object model nuttige wijzigingen kan aanbrengen.
 
Laatst bewerkt:
Ik heb nog een paar aanpassingen gedaan, ipv. entryID te noteren kan je ook het itemnummer zelf wegschrijven. Gewoon een teller laten lopen is dat, dan kan je in de tweede procedure gewoon dit gegeven gebruiken, en heb je die loop niet nodig. Werkt hier perfect.

Wat ik me wel afvraag, hoe wil je die mail waar je wilt heen linken, bepalen? Momenteel kan ik nergens terug vinden waar Outlook zichtbaar voor de gewone gebruiker de entryID of itemnummer weergeeft. Ik kan deze enkel met code vinden. Dus hoe wil die bepaalde mail waar je wil heen linken selecteren/aanduiden?
 
Laatst bewerkt:
Hoi Finch,

Goed stuk, waardoor ik op het internet ben gaan rondstruinen. Daar kwam ik de volgende code tegen om een mailitem direct op te vragen met zijn id, waardoor de for..next loop niet meer nodig is. :thumb:

Code:
    itemID = Cells(25, 1) 'geef hier aan welk entry-id je wilt weergeven
    Set olmail = olNs.GetItemFromID(itemID)
    olmail.Display

Overigens als je olmail niet als Variant maar als Outlook.MailItem declareert, dan kun je iets makkelijker de andere properties gebruiken... :)
 
Hoi Finch,

Goed stuk, waardoor ik op het internet ben gaan rondstruinen. Daar kwam ik de volgende code tegen om een mailitem direct op te vragen met zijn id, waardoor de for..next loop niet meer nodig is. :thumb:

Code:
    itemID = Cells(25, 1) 'geef hier aan welk entry-id je wilt weergeven
    Set olmail = olNs.GetItemFromID(itemID)
    olmail.Display

dat ga ik seffens eens bestuderen. Bedankt voor de tip. Heb je daar toevallig een linkje waar je dat gevonden hebt?

Overigens als je olmail niet als Variant maar als Outlook.MailItem declareert, dan kun je iets makkelijker de andere properties gebruiken... :)

In andere testcode had ik dat gedaan, maar blijkbaar niet in die procedure die ik postte.
Nu ja daar ben ik ook andere zaten vergeten :mad: Heb bv. in procedure 2 ook mijn objecten niet vrijgegeven. Ik zat toen ook een beetje in tijdsnood, als ik dat als excuus mag aanbrengen.
 
Ik heb nu een beetje zitten klooien met die link naar Outlook.

Voorlopig resultaat is als volgt te omschrijven:
-Ik kan mijn mails uit de inbox inlezen in een listbox op een userform: (gegevens die ik inlees: mailID (niet entryID), Datum, Afzender, Subject). Ik kreeg jammergenoeg wel een foutmelding bij read-deliveries, terwijl ik niet weet waarom.
-Vervolgens kan ik een mail uit die listbox selecteren, en een cel op een werkblad, en dan maakt die in de hoek rechts van de cel een knopje (shape) aan zodanig dat wanneer je daar op klikt die betreffende mail wordt geopend.

Het inlezen van al die mails duurt wel lang spijtig genoeg (afhankelijk van mailbox size, maar is niet op 2 seconden ingelezen - zal ik binnenkort even timen), dus die zet ik voorlopig in een sheet en refresh pas wanneer het nodig is.

Binnenkort zal ik dit wel eens posten op mijn site en in deze thread, maar binnen mijn proof-of-concept kan ik nu eigenlijk wel hetgeen bekomen dat TS wilde uitvoeren.
Ik hou jullie op de hoogte van vorderingen!

PS. Als iemand weet hoe ik mails sneller inlees, dan hoor ik dat graag!
 
Laatst bewerkt:
Ik heb een voorlopige versie van dit probeersel. Ik heb het hierbij ingevoegd.
Aan iedereen met interesse:
Probeer het even uit, en laat iets weten. Suggesties meer dan welkom.

Voor het zal werken, moet je wel even in je VBE de verwijzing naar Microsoft Outlook xx.0 Object Library aanduiden. Waarbij xx staat voor de meest recente versie die je vindt in het verwijzingen overzicht.

Je kan het invulscherm oproepen door Ctrl+Shift+H te drukken of uiteraard via je VBE of Alt+F8.

Werkwijze:
*je leest je mails in (voorlopig enkel die van mailbox - kan fouten opleveren indien er leveringsberichten inzetten, dat zal iets zijn voor binnenkort)
*selecteert een mail
*kiest een cel waar je de link wil zetten (indien niet ingevuld, neemt hij de activecell)
*drukt op het vierkantje om de mail te openen.

Let op: er is nog geen error-handling aanwezig, so be gentile :)

Nogmaals, ik hoor graag suggesties.
 

Bijlagen

Hé Finch,

Ik krijg een 'Out of memory' foutmelding bij het openen van de form in VBA. Ook bij het starten van de macro dus (zie bijlage). :shocked:

Gebruik je een speciaal component? Ik draai overigens Office2007.
 

Bijlagen

  • Error.jpg
    Error.jpg
    13,8 KB · Weergaven: 46
Hé Finch,

Ik krijg een 'Out of memory' foutmelding bij het openen van de form in VBA. Ook bij het starten van de macro dus (zie bijlage). :shocked:

Gebruik je een speciaal component? Ik draai overigens Office2007.

Raar. Een speciaal component? Buiten die verwijzing naar Microsoft Outlook 12.0 Object Library niet nee. Ben je zeker dat je die hebt aangezet? Dan kan in je VBE Extra>Verwijzingen>in de lijst aanvinken, niet enkel selecteren en ok drukken.
 
Ik heb alle references wel goed (zie bijlage). Ik vermoed dat het iets met het formulier te maken heeft omdat die niet wil openen. Vaak komt dat omdat er dan een control is gebruikt die ik niet (geinstalleeerd) heb. :shocked:
Een reference is het in principe niet, omdat die pas gechecked worden als je code runt en niet als je een form opent...
 

Bijlagen

  • references.jpg
    references.jpg
    37,4 KB · Weergaven: 66
Ik heb alle references wel goed (zie bijlage). Ik vermoed dat het iets met het formulier te maken heeft omdat die niet wil openen. Vaak komt dat omdat er dan een control is gebruikt die ik niet (geinstalleeerd) heb. :shocked:
Een reference is het in principe niet, omdat die pas gechecked worden als je code runt en niet als je een form opent...

Ik vind het ook een hele rare, ik zal de gebruikte even oplijsten:
2 commandbuttons
1 label
1 listbox
1 refedit-element

nothing fancy you see.Ik zal eens een zip bestandje met de 2007 versie toevoegen. Misschien dat dat beter lukt?

Heeft trouwens nog iemand dat probleem?
 

Bijlagen

Wat is een refedit component? Zegt mij niets... Ligt het niet daaraan? Kun je een versie zonder dat component posten?
 
Wat is een refedit component? Zegt mij niets... Ligt het niet daaraan? Kun je een versie zonder dat component posten?

Die heb je ook in je verwijzingen staan. Dat is voor een range te selecteren.
Zal morgen een versie zonder posten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan