Ik download iedere week .csv bestand dat standaard in de map "Documents"
wordt opgeslagen.
Dit lees ik dan in een ander bestand in en daar zijn geen problemen mee.
Nu willen wij dit inlees bestand op andere computers gaan gebruiken, maar
deze hebben allemaal een verschillende directory structuur. B.v "C:\ Mijn
documenten; "H:\ Users\Loek\Documents\ etc..
Nu ben ik opzoek naar een manier, in VBA, om het bestand dat het .csv
bestand inleest direct te laten zoeken in "Mijn documenten" van de des
betreffende computer.
Ik heb het e.a. met FileSearch geprobeerd maar dan wordt er op de hele Drive
gezocht en dat kan wel even duren.
Ook met de functie Dir kom ik niet verder daar het Path iedere keer anders
is.
Is het mogelijk om het path van "Mijn documenten" te bepalen.
Wie kan mij op weg helpen?
Alvast bedankt.
emil
"Loek" <Lo...@discussions.microsoft.com> schreef in bericht
news:224D02AE-64CB-46F9...@microsoft.com...
"emil" schreef:
> .
>
of
MsgBox Environ("USERPROFILE") & "\Mijn Documenten"
--
<a
href="http://users.skynet.be/fa436118/wim/opdrachten.htm">http:/www.wimgielis.be</a>: Excel (VBA code + example files), sports and music.
Gevonden op Internet en enigszins aangepast:
Option Explicit
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32.dll" ( _
ByVal hwndOwner As Long, _
ByVal nFolder As Long, _
pidl As ITEMIDLIST) _
As Long
Private Declare Function SHGetPathFromIDListA Lib "Shell32.dll" ( _
ByVal pidl As Long, _
ByVal pszPath As String) _
As Long
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Public Const CSIDL_COMMON_DOCUMENTS = 5
Private Const MAX_PATH As Integer = 260
Public Function fGetSpecialFolder(CSIDL As Long) As String
Dim sPath As String
Dim IDL As ITEMIDLIST
'
' Retrieve info about system folders
' such as the "Recent Documents" folder.
' Info is stored in the IDL structure.
'
fGetSpecialFolder = ""
If SHGetSpecialFolderLocation(0, _
CSIDL, IDL) = 0 Then
'
' Get the path from the ID list, and return the folder.
'
sPath = Space$(MAX_PATH)
If SHGetPathFromIDListA(ByVal IDL.mkid.cb, ByVal sPath) Then
fGetSpecialFolder = Left$(sPath, InStr(sPath, vbNullChar) - 1) _
& ""
End If
End If
End Function
'Met onderstaande code kun je de folder van Mijn Documenten oproepen ook als
deze is gewijzigd.
Sub test()
MsgBox fGetSpecialFolder(CSIDL_COMMON_DOCUMENTS)
End Sub
Vermoedelijk werkt dit onder Windows Vista en Windows 7 ook nog, hoewel
daar, voorzover ik heb begrepen, een nieuwe benadering is gekozen voor een
en ander.
Jan
Hier was ik naar opzoek en het werkt perfect.
"Wigi" schreef:
Als het pad naar Mijn Documenten is verplaatst, bijvoorbeeld naar H:\Data,
dan kom je er met deze oplossing niet.
Environ("USERPROFILE") zal namelijk altijd naar "C:\Documents en
Settings\NaamInlogger verwijzen. Tenzij de betreffende omgevingsvariabele is
gewijzigd.
Standaard staat daar inderdaad Mijn Documenten (of MyDocuments) in maar deze
kan verplaatst zijn en zelfs van naam veranderd.
Vandaar dat ik een andere mogelijkheid heb gegeven die wel naar Mijn
Documenten verwijst, ook al is het pad naar Mijn Documenten gewijzigd
(Verplaatst).
Maar goed als dit voor jou (op jullie netwerk) wel werkt is het natuurlijk
een stuk eenvoudiger.
Jan
"Loek" <Lo...@discussions.microsoft.com> schreef in bericht
news:2A96C939-B657-4ECD...@microsoft.com...