Variabel Pad om bij mijn documenten te komen

Status
Niet open voor verdere reacties.

septie42

Gebruiker
Lid geworden
7 nov 2015
Berichten
25
Goeie avond iedereen die dit leest,

Om een map aan te maken met StrDir heb ik geen probleem, met een vast gegeven ( "C:\ documenten and settings\Mijn documenten\ Nieuwe map") komt dat steeds goed. De mappen worden steeds in mijn documenten aangemaakt.
Probleem is als het pad variabel is, bv met verschillende gebruikers op één pc , dan krijg je iets als ( "C:\Users\ Joost\ documenten and settings\Mijn documenten\ Nieuwe map").

Kan dat op één of andere manier worden opgevangen?

Ik heb verschillende ( denk ik mogelijkheden gezien) maar begrijp er niet genoeg van, om te weten wat ze doen.Of moeten doen om er te komen.

Mvg Rik
 
Gebruik dan iets als dit:
Pad = Environ("USERPROFILE") & "\Documents\Nieuwe map\"
 
Laatst bewerkt:
Bedankt voor de reactie,

is het mogelijk om daar wat uitleg bij te geven, wat het doet en waar dat geplaatst word?
Kan me moeilijk voorstellen , dat daarmee de kous af is.
 
In de Environ vind je verschillende 'vaste' locaties, zoals de gebruikersnaam en de gebruikerspaden. Door die te gebruiken i.p.v. een harde codering naar een pad, maak je flexibele verwijzingen naar (in dit geval) de documenten map. De paden zijn voor elke gebruiker namelijk hetzelfde, alleen de naam verandert. Dus de kous zou hiermee behoorlijk af moeten zijn :). Probeer maar uit, zou ik zeggen! Vraag desnoods de variabele Pad op met een Msgbox en controleer of het pad goed is of niet. Je kunt ook zoiets gebruiken:
Code:
sFile = "C:\Documents and Settings\" & Environ("USERNAME") & "\Bureaublad\ImportRegulier.xls"
Het kan zijn dat je de code nog moet aanpassen naar
Code:
pad = VBA.Environ("USERPROFILE") & "\Documents\jouwmap\"
 
Bedankt voor de reactie,

is het mogelijk om daar wat uitleg bij te geven, wat het doet en waar dat geplaatst word?
Kan me moeilijk voorstellen , dat daarmee de kous af is.

Uitstekende uitleg van OctaFish.
Wat je vraag betreft lijkt het me evident dat het gebruikt moet worden op de plek waar je nu de volledige, hard gecodeerde padnaam gebruikt.

Daaarnaast vraag ik me af waarom je het antwoord niet eerst probeert voordat je er een nieuwe vraag over stelt.
 
Laatst bewerkt:
Bedankt OctaFish en edmoor, dit helpt me een heel eind op weg en maakt veel duidelijk.

@ edmoor waarom ik de vraag stelde voor dat ik er mee aan de slag ging, simpel voor mij is het nog niet altijd duidelijk, waar ik iets moet zetten , sub , module, waar in de sub, en ik begrijp dat jullie in een oog opslag weten waar naartoe maar voor ons is dat nog iets anders.
 
Geen probleem. Mocht het niet lukken, plaats dan je code hier en kunnen we nauwkeuriger aangeven waar en wat je moet doen.
 
Hallo, beetje bezig geweest, met wat jullie hadden voorgesteld, en jeb , dat is gelukt.
De 1ste werkt goed voor mij.Bedankt voor de tip

( "C:\ documenten and settings"& Environ(USERNAME")&"\Mijn documenten\ Nieuwe map")

Nu zie ik dat er bij ons tussen zitten met de 2 onderstaande ook.

( "C:\ documenten and settings\Mijn documenten\ Nieuwe map")
( "C:\Users\ Joost\ documents\Mijn documenten\ Nieuwe map").

Nu mijn vraag kan dat opgevangen worden in één lijn, wat ik vermoed van niet of moeten dat verschillende lijnen zijn in de code.
 
Gebruik wat ik zei in #2, dan heb je beide opgevangen.
 
Oke, we gaan dat uit proberen , begrijp nu al beter wat er gebeurt. En kan me al iets voorstellen wat het word.

bedankt voor de vlugge reactie.
 
Mij lijkt deze benadering robuuster:

Code:
Sub M_snb()
  msgbox createobject("wscript.shell").specialfolders(16)
end sub
 
Laatst bewerkt:
hallo, Edmoor ik heb uw suggestie ter harte genomen en toegepast, en het werkt perfect, bedankt.

Mvg Rik
 
En dat terwijl die van snb veel beter is :).
 
Met SpecialFolders kun je meer mappen achterhalen dan met Environ. Je moet alleen weten welke je moet hebben. Dat kan ofwel door de naam in te typen, ofwel door het indexnummer te gebruiken. snb gebruikt graag indexnummers waardoor de code lastiger te lezen is voor een beginnende ontwerper. Maar dit commando
Code:
     CreateObject("wscript.shell").SpecialFolders(15)
is dus hetzelfde als dit:
Code:
     CreateObject("wscript.shell").SpecialFolders("MyDocuments")

Dit zijn alle SpecialFolders die je kunt opvragen:
AllUsersDesktop
AllUsersStartMenu
AllUsersPrograms
AllUsersStartup
Desktop
Favorites
Fonts
MyDocuments
NetHood
PrintHood
Programs
Recent
SendTo
StartMenu
Startup
Templates

Draai dit macrootje maar eens, en kijk in het Venster Direct wat het resultaat is.

Code:
Sub ListEnvironVariables()
Dim strEnviron As String, strName As String
Dim Indx As Long

    Do
        Indx = Indx + 1
        Debug.Print Indx & "  -  " & Environ(Indx)
    Loop Until Environ(Indx) = ""
    Indx = 0
    
    On Error GoTo Hell
    Do Until CreateObject("wscript.shell").SpecialFolders(Indx) = ""
        strEnviron = CreateObject("wscript.shell").SpecialFolders(Indx)
        Debug.Print Indx & "  -  " & strEnviron
        Indx = Indx + 1
    Loop
        Debug.Print CreateObject("wscript.shell").SpecialFolders(6)

Hell:
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan