• 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 naar pdf dmv vba

Status
Niet open voor verdere reacties.

Lisett

Gebruiker
Lid geworden
4 jan 2013
Berichten
55
Hoi,
Ik ben al een tijdje aan het prutsen met het maken van een hyperlink via vba. Het idee is dat er een worksheet wordt opgeslagen in een pdf (ook dmv vba), en dat er een hyperlink komt naar dit documentje. Het opslaan verloopt allemaal vlekkeloos maar die hyperlink lukt me niet. De hyperlink zelf staat er wel, maar als ik er opklik krijg ik de melding dat het opgegeven bestand niet kan worden geopend. Wat doe ik fout.
Dit is de code voor de hyperlink die ik nu heb staan:
Code:
.Hyperlinks.Add Anchor:=Cel, Address:="\Facturen\" & "Facturen" & Space(1) & MaandNaam(Month(Now)) & "-" & Year(Now)
Dit is de code waar het document wordt opgeslagen (dus ook waar het dadelijk vandaan wordt gehaald
Code:
Function FactuurOpslaan()
    Dim stPath As String
    With Sheets("Factuur Opstellen")
        stPath = ActiveWorkbook.Path & "\Facturen\"
        stPath = stPath & "Facturen" & Space(1) & MaandNaam(Month(Now)) & "-" & Year(Now)
        With CreateObject("Scripting.FileSystemObject")
             If Not .FolderExists(stPath) Then .CreateFolder stPath
        End With
.ExportAsFixedFormat 0, stPath & "\Factuur " & .Range("F32") & ".pdf", , 1
    End With
End Function
.

Ik hoop dat jullie mij uit de brand kunnen helpen.
 
Ik heb niet direct de oplossing maar denk dat je toch de Path nodig hebt in je Hyperlink om een bestand op te halen.
 
Code:
.Hyperlinks.Add Anchor:=Cel, Address:=ActiveWorkbook.Path & "\Facturen\" & "Facturen" & Space(1) & MaandNaam(Month(Now)) & "-" & Year(Now)

Dit werkte helaas ook niet
 
ik denk ook dat ergens dan die & ".pdf" moet voorkomen

mvg
Leo
 
Een macro lijkt me voor hand liggender dan een funktie:
Het vermijden van spaties in werkblad-, pad- en bestandsnamen doet soms ook wonderen.

Code:
Sub M_snb()
  With Sheets("Factuur Opstellen")
    c00 = ActiveWorkbook.Path & "\Facturen\Facturen_" & Format(Date, "mmmm-yy")
    If Dir(c00, 16) = "" Then MkDir c00

    c00=c00 & "\Factuur_" & .Range("F32") & ".pdf"
    .ExportAsFixedFormat 0, c00
    .Hyperlinks.Add .Cells(20, 1), c00 
  End With
End Sub
 
Laatst bewerkt:
Geheel buiten je vraag om, ben ik geen fan om ActiveWorkbook te gebruiken, maar ThisWorkbook. Mits je dit opzettelijk hebt bedoeld, maar gezien je code redt je het met de tweede optie.
Wanneer je handmatig of met mbv je code een ander bestand opent kan je code in de soep lopen.

Verder zou ik het inderdaad zo proberen als Leo aangeeft;
Code:
.Hyperlinks.Add Anchor:=Cel, Address:=ActiveWorkbook.Path & "\Facturen\" & "Facturen" & Space(1) & MaandNaam(Month(Now)) & "-" & Year(Now) & [COLOR="#FF0000"][B][U]".pdf"[/U][/B][/COLOR]
 
Als ik die macro gebruik, dan krijg ik de fout dat c00 niet is gedefinieerd? Doe ik dan iets fout?
 
@Spaarie: Wat is het verschil dan tussen activeworkbook en thisworkbook? De macro kan alleen worden opgeroepen vanuit 1 worksheet, dus ik denk dat het niet veel verschil voor mij maakt. Ik hoor het graag, want verbeteringen zijn natuurlijk altijd goed! En helaas geeft jou code dezelfde foutmelding...
Als ik kijk welke link eronder staat, dan gaat de link wel naar de goede map maar hij kan niet het goede pdfje vinden.
 
Laatst bewerkt:
ik heb de oplossing gevonden.
Code:
With Sheets("Factuur Opstellen")
     .Hyperlinks.Add Anchor:=Cel, Address:=ActiveWorkbook.Path & "\Facturen\" & "Facturen" & Space(1) & MaandNaam(Month(Now)) & "-" & Year(Now) & "\Factuur " & .Range("F32") & ".pdf"
     End With
 
'ActiveWorkbook' zal je VBA code het bestand gebruiken wat op dat moment 'actief' is, dus zoals ik aangaf kan dit ook een bestand zijn die je al open hebt staan. In mijn ogen een variabele waarde, want deze kan continu gewijzigd worden.

'ThisWorkbook' zal je VBA code het bestand gebruiken waar de code in staat, ongeacht of nou een ander bestand actief is en/of wordt gemaakt. In mijn ogen is dit dus een constante waarde, omdat deze altijd het bestand aanhoudt waarde code fysiek in staat.
 
Verwijder 'Option Explicit' en de macro draait als een zonnetje.
 
@spaarie

Thisworkbook lijkt me in dit geval echt niet handig.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan