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

PDF bestand openen in excel .

Status
Niet open voor verdere reacties.

sloekie

Gebruiker
Lid geworden
7 apr 2008
Berichten
221
Hallo allemaal

Ik heb op de site alles afgezocht om een PDf bestand te openen via een vba code.

Ik dacht er 1 gevonden te hebben maar deze werkt niet.

Het mooiste zou zijn dat dit met een userform kon
Dus eigenlijk wil ik zoeken naar het bestand die opgeslagen is in C:\Factuur.

Je moet dan zoeken op jaar en getal (2014-001)

Zie bijlage:

Vr. gr. Sloekie
 

Bijlagen

En als dit kan dat deze ook geopend kan worden.

want bij die ik op de site gevonden had kwamen allemaal rare tekens.

Gr Sloekie
 
Kun je iets met deze?
Deze opent het Pdf-bestand niet maar voegt het in een tekstvak.
Code:
Private Sub CommandButton1_Click()
Dim fn As Variant
    fn = Application.GetOpenFilename("C:\Faktuur\PDF-files,*.PDF", 1, , , False)
    If TypeName(fn) = "Boolean" Then Exit Sub
     ActiveSheet.OLEObjects.Add(Filename:=fn, Link:=False, DisplayAsIcon:=False).Select
End Sub
 
Laatst bewerkt:
:(:(:(

Heb je ook iets anders want dit is niet wat ik zocht.

gr. Sloekie
 
Jij wil dus een nr intypen in de textbox en dan dat bestand gaan zoeken en openen ?
Ik zou eerder een Combobox gebruiken ipv een TextBox, deze CB vullen met de aanwezige bestanden uit je zoekdirectory (eventueel gefilterd als er niet enkel pdf-bestanden in de dir staan) zodat je maar hoeft te scrollen naar het juiste pdf-bestand en via de knop dan openen.
Voordeel hiervan is dat je alleen de relevante bestanden te zien krijgt, geen typfouten kan maken in de te zoeken naam, geen problemen krijgt mbt foutafhandeling, enz...
Of eentje met een Listbox ipv Combobox.
 

Bijlagen

Laatst bewerkt:
Hij werkt goed maar er komt niks in de listbox te staan.

Want ik heb 2 pdf bestanden in staan op c:\Factuur\

Hoe kan dat?

GR. Sloekie
 
Een opmerkzaam oog zou gezien hebben dat in cel A1 Faktuur staat. Als je dit nu wijzigt naar Factuur dan zal het naar behoren werken.:o:o
Als je het pad in deze cel wijzigt naar eender welke directory kan je ook in andere directories zoeken en wordt het multifunctioneel.
 
Sorry voor de late reactie:o.

Maar het werkt.
Ik had het over het hoofd gezien:o

Maar is het wel mogelijk om met een zoekopdracht te zoeken dan zou je alleen de laatste 3 cijfers kunnen doen?
Want als je 100 facturen hebt dan moet je wel lang scrollen.

Gr. Sloekie
 
Mij lijkt dit voldoende:

Code:
Private Sub UserForm_Initialize()
    ListBox1.List = Split(CreateObject("wscript.shell").exec("cmd /c dir """ & Blad1.Cells(1) & "\*.pdf"" /b").stdout.readall, vbCrLf)
End Sub

Private Sub CommandButton1_Click()
    Shell """F:\Program Files\Foxit Software\Foxit Reader\foxit reader.exe""" & " """ & Blad1.Cells(1) & "\" & ListBox1.Value & """"
End Sub
 
Hallo Warme bakkertje.

Dit is nu precies wat ik zocht.

En het werkt ook zo als ik wou

Mag ik je er voor hartelijk danken er voor.:thumb::thumb:

Ik ga mee verder.

Gr. Sloekie
 
Ik had nog wel een vraagje zou die listbox ook naar een textbox kunnen,
want ik probeer dit te wijzigen in de code maar ik krijg steeds een fout melding.

gr. Sloekie
 
Vervang de Listbox door een Textbox (Naam: TextBox2).
Vervang dan alle code in het UF door onderstaande.
Code:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub TextBox1_AfterUpdate()

    TextBox2.Text = VBA.Strings.Filter(Split(CreateObject("wscript.shell").exec("cmd /c dir """ & _
            Blad1.Cells(1) & "\*.pdf"" /b").stdout.readall, vbCrLf), TextBox1.Text, True)(0)
    
End Sub

Private Sub CommandButton1_Click()

    ShellExecute 0, "Open", Blad1.Cells(1) & TextBox2.Text, "", "", vbMaximizedFocus

End Sub

@ snb
2 redenen waarom ik de API-versie verkies boven zijn Shell-broertje (of -zusje):)
1. Geen onaangename verassingen bij het upgraden v/d Reader
2. API-versie opent sneller dan Shell-versie
 
Laatst bewerkt:
@WB

Dank voor je toelichting op je overwegingen. :)
Ga ik nog even verder uitzoeken. (ik houd niet zo van API's, omdat ze vaak ook rechtstreeks te gebruiken zijn).

bijv.

Code:
Sub M_snb()
    CreateObject("shell.application").ShellExecute "G:\aqua morgana.pdf", "Open"
End Sub
of
Code:
Sub M_snb()
    CreateObject("shell.application").Namespace("G:\").Items.Item("Aqua Morgana.pdf").InvokeVerb "Open"
End Sub
of
Code:
Sub M_snb()
    CreateObject("wscript.shell").Run """G:\aqua morgana.pdf"""
End Sub
VBA.Strings. mag wat mij betreft wel weg.De VBA bibliotheek is geladen, dus filter("...") gaat dan prima.
 
Laatst bewerkt:
Dan zou dit volstaan.
Code:
Private Sub TextBox1_AfterUpdate()

    TextBox2.Text = Filter(Split(CreateObject("wscript.shell").exec("cmd /c dir """ & _
            Blad1.Cells(1) & "\*.pdf"" /b").stdout.readall, vbCrLf), TextBox1.Text, True)(0)
    
End Sub

Private Sub CommandButton1_Click()

    CreateObject("shell.application").ShellExecute Blad1.Cells(1) & TextBox2.Text, "Open"
    
End Sub
 
Sorry voor de late reactie was een paar dagen weg.

Ik heb alles gedaan.

Hij geeft een foutmelding: object vereist.

TextBox2.Text = Filter(Split(CreateObject("wscript.shell").exec("cmd /c dir """ & _
Blad1.Cells(1) & "\*.pdf"" /b").stdout.readall, vbCrLf), TextBox1.Text, True)(0).Text, True)(0)

Dit geeft hij geel aan.

Ik blad1 al eens verandert naar factuur.

Gr Sloekie
 
Code:
TextBox2.Text = Filter(Split(CreateObject("wscript.shell").exec("cmd /c dir """ & _
Blad1.Cells(1) & "\*.pdf"" /b").stdout.readall, vbCrLf), TextBox1.Text, True)(0)[COLOR="#FF0000"].Text, True)(0)[/COLOR]
Weet niet of het een kopieërfout is, maar het rode gedeelte hoort er zeker niet bij.
Blad1 is de codenaam v/h werkblad dus als je factuur wil gebruiken moet het wel Sheets("factuur") zijn.
 
Laatst bewerkt:
Ik had inderdaad dit dubbel.

Dit was waarschijnlijk een kopieer fout.:o

Maar dit werkt perfect.

ik ga hier verder mee.

Nog bedankt hiervoor.

Gr. Sloekie.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan