Opgelost Check of pdf bestaat a.d.h.v. knop.

Dit topic is als opgelost gemarkeerd

ExcelTonnie

Gebruiker
Lid geworden
5 jul 2016
Berichten
308
In mijn bestand heb ik knop staan met een verwijzing voor het ophalen van een pdfbestand.
Op cel W2 staan de bestandsnaam die opgehaald kan worden.
Wanneer er geen bestand aanwezig is dan zie ik op de achtergrond dat de verkenner de map documenten heeft geopend maar geen melding of iets dergelijks.
Nu zou ik het handig vinden als de knop bijv. groen is als er een bestand aanwezig is of Rood als er geen bestand aanwezig is met de naam zoals op W2

Code:
Private Sub CommandButton6_Click()
    VBA.Shell "Explorer.exe C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf" 'Pdf wordt geopend

End Sub
 
Ik zie geen document en dus ook geen knop.
De check:
Code:
Private Sub CommandButton6_Click()
    pdf = "C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf"
    If Dir(pdf) = "" Then
        MsgBox pdf, vbCritical, "Bestand niet aanwezig"
    End If
End Sub
 
Laatst bewerkt:
Edmoor
Met alleen de code van jou krijg ik geen bestand meer geopend, in combinatie werkt het wel.

Code:
Private Sub CommandButton6_Click()
VBA.Shell "Explorer.exe C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf" 'Pdf wordt geopend
    pdf = "C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf"
    If Dir(pdf) = "" Then
        MsgBox pdf, vbApplicationModal, "Bestand niet aanwezig"
    End If
End Sub
 
Wat ik al opmertkte, je plaatste geen voorbeeld document.
En het lijkt me duidelijk dat je dan eerst de check moet doen voordat je het document probeert te openen.
 
Edmoor
idd geen document bijgevoegd ivm met veel dingen die ik dan moet verwijderen.
maar kan hier wel op verder borduren denk ik.
Dank je wel.
 
Probeer dit maar eens:
Code:
Private Sub CommandButton6_Click()
    PDF = "C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf"
    If Dir(PDF) = "" Then
        MsgBox PDF, vbCritical, "Bestand niet aanwezig"
    Else
        Shell "Explorer.exe " & PDF 'Pdf wordt geopend
    End If
End Sub
 
Nee.
In jouw combi open je eerst de PDF in plaats van eerst te controleren of hij bestaat.
 
Edmoor

Je hebt helemaal gelijk.
Wat ik eigenlijk zoek is wanneer cel W2 wijzigt dat er gecheckt wordt ok deze bestaat.
Als dit wel aanwezig is dan bijv.

Code:
Private Sub UserForm_Click()
PDF = "C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf"
    If Dir(PDF) = "" Then
CommandButton5.ForeColor = &HFF&
Else
CommandButton5.ForeColor = &H8000000D
End If
End Sub
 
Laatst bewerkt:
Dat moet je dan niet doen in de Userform_Click maar in de Userform_Activate.

Tip:
Let voor de leesbaarheid ook op de instringpunten.

Daarnaast kan je die code ook zo doen:
Code:
Private Sub UserForm_Activate()
    CommandButton5.ForeColor = IIf(Dir("C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf") <> "", vbGreen, vbRed)
End Sub
 
Laatst bewerkt:
CSS:
Private Sub UserForm_Click()
   CommandButton5.ForeColor = 255 ^ (1 + Abs(Dir(Replace("C:\TVE\actueel\Documentatie\~.pdf", "~", [W2])) <> ""))
End Sub
 
Er leiden meerdere wegen naar Rome zie ik wel, ik rij dus met een omweg maar het was me wel gelukt.
Ga ook jullie adviezen bekijken, allemaal hartelijk dank.

Mijn omweg!
Code:
PDF = "C:\TVE\actueel\Documentatie\" & Range("U2") & ".pdf"
    If Dir(PDF) = "" Then

    CommandButton5.BackColor = &HFF&
        Else
    CommandButton5.BackColor = &HC000&
End If
'==================================================================
PDF = "C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf"
    If Dir(PDF) = "" Then

    CommandButton6.BackColor = &HFF&
        Else
    CommandButton6.BackColor = &HC000&
End If
 
Vermijd overbodige variabelen.
 
Ik vraag me af waarom je die omweg gebruikt als het in 1 regel kan en zonder variabelen.
Daarnaast zijn je inspringpunten totaal fout.
 
Vandaar dus dat ik ook zo hamer op het juiste gebruik van inspringpunten.
 
Vandaar dus dat ik ook zo hamer op het juiste gebruik van inspringpunten.
Waardeer dat ook enorm maar valt niet altijd mee om de juiste code toe te passen.

Zit trouwens ook nog te worstelen met onderstaande als de map waaruit de Pdf gehaald moet worden wel altijd gelijk blijft en alleen de drive letter wijzigt hoe geef ik dan het vaste path aan.
Dus de map Documentatie blijft altijd als submap onder het programma path staan.

Code:
CommandButton5.ForeColor = IIf(Dir("C:\TVE\actueel\Documentatie\" & Range("W2") & ".pdf") <> "", vbGreen, vbRed)
 
Dat kan bijvoorbeeld zo:
Code:
Pad = "C:\TVE\actueel\Documentatie"
CommandButton5.ForeColor = IIf(Dir(Pad & "\" & Range("W2") & ".pdf") <> "", vbGreen, vbRed)
 
Laatst bewerkt:
Of ik doe iets niet goed of mijn uitleg is niet correct.
Als ik de code bekijk dan betekent dit toch dat het pad vast staat namelijk.
Pad = "C:\TVE\actueel\Documentatie\"
Nu staat het het programma dus onder "C:\TVE\actueel\ en de Pdf onder \Documentatie.
Dacht dus meer aan iets van Activeworkbook.path enz. dat het niet uitmaakt op welke drive het programma staat. Stel voor Programma staat op H:\Edmoor\actueel en de Pdf's onder H:\Edmoor\actueel\Documentatie dan moet die ook de Pdf's vinden.

Hoop dat de uitleg wat duidelijker is.
 
Achter Pad = kan je uiteraard invullen wat je maar wil.
Dat kan inderdaad ook ActiveWorkbook.Path zijn.

Zelf maak ik voor dat soort dingen een blad met de naam Instellingen.
Daar kan je de gewenste locatie dan invullen en achter Pad = verwijzen naar de betreffende cel.
 
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan