Zoeken in directory op basis van celwaarde

Status
Niet open voor verdere reacties.

royb73

Gebruiker
Lid geworden
19 sep 2012
Berichten
228
Beste,

Ik ben op zoek naar een VBA code die op basis van een celwaarde de bijbehorende map opent.

Voorbeeld.
Ik heb een archieflijst en daar staan diverse rapportnummers in kolom A.
Indien ik op cel A5 van sheet 2012 sta (bijv. met waarde "Mc14024"), dan moet hij deze map zoeken in "D:\Test" en vervolgens deze directory openen (bijvoorbeeld D\Test\MC14024_Teststraat 4_Eindhoven).

Bekijk bijlage Overzichten.xlsx

Hopelijk kan iemand mij hiermee helpen.

Met vriendelijke groet,

Roy.
 
Als je alleen in een cel staat gebeurt er niks.
Dus op welk moment moet dat worden gedaan?
 
Beste Edmoor,

Nadat je op de cel staat bijvoorbeeld op A5. Dan pas zou de code moeten werken.
 
Dus je bedoelt dat wanneer je die cel verlaat die actie wordt gedaan? Of misschien door een dubbelklik in die cel?
 
Heb je het over een bestand of over een directory/folder/map ?
 
Beste Edmoor,

Als ik op cel A5 sta, dan moet hij de waarde van deze cel als zoekwaarde gebruiken. Dus als in Cel A5 "Mc12345" staat, dan moet hij de directory zoeken en openen met deze zoekwaarde. Misschien is dubbelklik op die cel ook een optie om de zoekwaarde te vinden in de directory (mapnaam).

@SNB : Het gaat puur om de directory wat geopend moet worden.

Mvg

Roy.
 
Die zoekactie zal in VBA gemaakt moeten worden. Mijn vraag is dus op welk moment dan die routine moet worden geactiveerd. Puur het staan in die cel doet niks. Dus, bij het verlaten van die cel of een dubbelklik in die cel. Beide is mogelijk, aan jou de keuze.
 
Laatst bewerkt:
Beste Edmoor,

Dubbelklik op de te zoeken waarde.

Mvg

Roy
 
daarvoor hoeft de directory toch niet zichtbaar te worden ?

Code:
msgbox dir("G:\OF\" & target.value)
 
Dat is dus mijn volgende vraag. Als alles, zoals je zegt, in D:\Test staat, wat moet er dan gebeuren als er een bestand wordt gevonden waarvan de naam begint met de waarde in die cel? Die vertegenwoordigd dan de naam van een map die vervolgens moet worden geopend?
 
Laatst bewerkt:
De zoekwaarde vertegenwoordigd een deel van de mapnaam in D:\test. De zoekwaarde is een uniek rapportnummer en kan niet 2 keren voorkomen in D:\Test.
Bij match moet de desbetreffende directory geopend worden.

Mvg.

Roy
 
En met het openen van de directory bedoel je dat deze moet worden getoond in de Verkenner? Dat kan, ik zal straks even een voorbeeldje maken als niemand anders me voor is.
 
Het moet inderdaad getoond worden in de verkenner.
Bedoeling is dat de bijbehorende directory in de verkenner wordt geopend. Voor de rest niks meer.

Gr.
Roy
 
En met het openen van de directory bedoel je dat deze moet worden getoond in de Verkenner? Dat kan, ik zal straks even een voorbeeldje maken als niemand anders me voor is.

@Edmoor: Je kunt ook bij het selecteren van de cel al de macro starten (zeg maar er op klikken i.p.v. dubbelklikken). Dat is ook een functionaliteit die ik ooit eens heb geschreven voor een projectapplicatie: per rij een project met een projectnummer en per project een folder met diverse projectdocumenten.

Door te klikken op de cel met (in mijn geval) het projectnummer, werd de bijbehorende folder in de verkenner geopend en kan een gebruiker een bestand openen naar keuze.

Ik ga je overigens niet proberen voor te zijn. De eer is geheel aan jou... :p
 
Laatst bewerkt:
Hoi etri,

Heb je daar een simpel voorbeeldje van?
Of werkt dat misschien op basis van Worksheet_SelectionChange?
 
Lijkt mij allemaal niet zo moeilijk:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 Then
        Shell "C:\WINDOWS\explorer.exe """ & "D:\Test\" & Target.Value & "", vbNormalFocus
    End If
End Sub
 
Is het ook niet, maar ik gebruik er liever geen Shell opdracht voor en wil wat meer controle over andere zaken. Maar je hebt gelijk, op jouw manier is het wel heel makkelijk :)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Folder As String
    Dim IniDir As String
    
    On Local Error GoTo Stoppen
    If Target.Column = 1 And Target.Row > 4 Then
        IniDir = "D:\Test\"
        Folder = Dir(IniDir & Target.Value & "*", vbDirectory)
        If Folder <> "" Then
            Folder = IniDir & Folder & "\"
            With Application.FileDialog(msoFileDialogOpen)
                .InitialFileName = Folder
                .AllowMultiSelect = False
                .Show
            End With
        End If
    End If
Stoppen:
End Sub
 
Laatst bewerkt:
Beste Edmoor,

Dit werkt wel goed.

Ik zou dit graag in de windows verkenner geopend willen hebben i.p.v. in "Bestand openen" pop-up.
Bovendien als ik naar een lege cel ga, dan opent ie ook de "bestand openen" pop-up.

Indien een directory niet bestaat in "D:\Test" dan zou het fijn zijn om een melding te krijgen dat de directory niet bestaat. Nu opent hij alsnog de "Bestand openen" pop-up.

Groeten en alvast bedankt.

Groeten,

Roy.
 
Dan zullen we toch terug moeten vallen op Shell, maar dan wat uitgebreider.
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Folder As String
    Dim TopDir As String
    
    On Local Error GoTo Stoppen
    If Target.Column = 1 And Target.Row > 4 And Target.Value <> "" Then
        TopDir = "D:\Test\"
        Folder = Dir(TopDir & Target.Value & "*", vbDirectory)
        If Folder <> "" Then
            Folder = TopDir & Folder & "\"
            Shell Environ("WINDIR") & "\explorer.exe """ & Folder & "", vbNormalFocus
        Else
            MsgBox "Geen bijbehorende map gevonden."
        End If
    End If
Stoppen:
End Sub
 
Goedemorgen Edmoor,

Dit werkt supergoed!

Ik wil dit code gebruiken in 1 vast bestand (Overzichten.xlsm) en in alle tabbladen. Nu maak ik 1 opdrachtknop in een sheet aan, maar die kan ik dan niet gebruiken in andere sheets. Ik wil dit desnoods op de ribbon gooien. Ik weet dan niet of dit gaat werken in alle sheets.

Ik heb diverse structuren in mapnamen staan in D:\Test\.
Indien de mapnaam "05015 Test Hoofddorp" bevat dan vindt hij het wel.
Indien de mapnaam "2013 05015 Test Hoofddorp" bevat, dan vindt hij het niet.
Kan dit zodanig gemaakt worden dat hij de zoekwaarde in de hele mapnaam zoekt?

Met vriendelijke groet,

Roy,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan