listbox

Status
Niet open voor verdere reacties.

kibus

Gebruiker
Lid geworden
17 nov 2006
Berichten
271
Beste Kenners

ik heb dit stukje vba op gevonden, werkt prima , de keuze box vult met alle pdf van de map,

combobox1.List = filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\Documents\test\*.pdf"" /b /a-d /s").stdout.readall, vbCrLf), ".")

Echter wil ik deze aanpassen zodat de box gevuld word met alleen de pdf de beginnen met de celwaarde die zich bevind in a2 (jaartal)vervolgens verschillende nummers

2021_100.pdf
2021_150.pdf
etc
2022_100.pdf
2022_150.pdf

als dus in cel A2 2021 staat de list vullen met

2021_100
2021_150
etc

iemand enig idee hoe ik deze aanpassing moet doen?

alvast bedankt!
 
Bv.
Code:
combobox1.list = filter(Split(CreateObject("wscript.shell").exec("cmd /c Dir ""C:\Users\Documents\test\" & range("a2") & "_*.pdf"" /b /a-d /s").stdout.readall, vbCrLf),".")
 
Laatst bewerkt:
Vind je die flikkering niet storend? Aangenomen dat je met een userform werkt.
 
Dank voor jullie reactie,

ik heb even een bestandje bijgevoegd....

de bedoeling is dat als het formulier wordt opgestart de box gevuld wordt met files beginnend met de waarde in cel A2 en een joker teken ...
vervolgens als de gebruiker er op klikt het pdf wordt geopend...
de gegeven oplossing van HSV heb ik toegepast .. de box word niet gevuld wellicht zijn er ook andere oplossingen voorstellen

kibus
 

Bijlagen

  • helpmij.xlsm
    48 KB · Weergaven: 21
De code van HSV is correct als je hem in de macromodule van het werkblad met de gevulde cel A2 zet.
 
De code van HSV is inderdaad gewoon goed, maar je hebt het fout toegepast.
Verwijder in je eigen code de spatie tussen de \ en de "
Code:
"cmd /c Dir ""C:\Users\Edwin\Documents\ " & range("d2")
 
Laatst bewerkt:
Zonder flikkering. Zet dit allemaal achter je Userform module

Code:
Dim ar() As Variant, x As Long

Private Sub UserForm_Initialize()
 getFile "C:\Users\Documents\test\"
 ComboBox1.List = ar
End Sub

Public Sub getFile(objFolderPath As String)
 Dim sFold, it, sf
 With CreateObject("scripting.filesystemobject")
    Set sFold = .GetFolder(objFolderPath)
    For Each it In sFold.Files
       If it.Name Like Range("A2") & "_*.pdf" Then
          ReDim Preserve ar(x)
          ar(x) = it.Path    'of it.name
          x = x + 1
       End If
    Next
    For Each sf In sFold.SubFolders
       getFile sf.Path
    Next
 End With
End Sub
 
Laatst bewerkt:
@JEC

'Public' is overbodig
Set oFold is overbodig
De test kan veel eenvoudiger in VBA

Code:
dim c00
Sub M_snb()
  c00=""
  M_getFile application.defaultfilepath
  ListBox1.List = filter(filter(split(c00,"~"),".PDF"),cells(2,1)& "_")
End sub

Sub M_getFile(c01)
 For each it in CreateObject("scripting.filesystemobject").GetFolder(c01).files
   c00= c00 & "~" & it.name
   for Each it1 In .parent.SubFolders
     M_getFile it1.Path
   Next
 End With
End Sub
 
Laatst bewerkt:
Klopt, was een kopie uit een ander draadje, vandaar de public nog.
Mooie aanvulling verder
 
Je code gaat echter niet werken zo ;) Ik verwacht dat de codes qua snelheid niet afwijken
 
Laatst bewerkt:
ben nog aan het puzzelen met de aangeven oplossingen, het formulier start op maar de box op het formulier wordt nog niet correct ..
 
Plaats dan het document of de code zoals je deze nu hebt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan