Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 3632
  • Last Modified:

Find location of “My Documents” with VBA in Windows 7

Because my drive C: was getting too filled, I moved "My Documents" from its usual location of

                “C:\Documents and Settings\" & Environ("USERNAME") & "\" & “My Documents”

to the same location on drive “F:”

     I would like to have VBA be able to recognize where the new location of “My Documents” is. Other persons who use my programs may also have moved the location of “My Documents,” so any suggestions as to how VBA can find that folder would be most welcome.

     Note: my Windows Explorer indicates that drive C: still has a directory named “Documents and Settings” but if one clicks on it, a message appears that the directory is not accessible.

     I suppose one could check each drive for the existence of a “My Documents,” but I do not know how to make a loop that could look at each drive on a computer.

          Thanks, as always, for your help
          John Robin
0
JohnRobinAllen
Asked:
JohnRobinAllen
  • 3
  • 3
  • 2
  • +2
1 Solution
 
FixforyouCommented:
Did you use the properties page to move the my documents folder?  The actual path is now {DRIVELETTER}:\Users\{username}\   if I remember correctly.  Your script will have to point to that location I would think, but then it would be pointed to a symbolic link.
movedocuments3.png
0
 
danleinCommented:
Can't you just put it in a library ?
0
 
FixforyouCommented:
Oppps, forgot to add the string variable
%HOMEPATH%\My Documents

see what that does
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
d_williaCommented:
Here is the reg entry for the setting:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\Personal
 
0
 
FixforyouCommented:
if "%HOMEPATH%\My Documents" does not work make sure you have ownership of the drive or files...

For taking ownership of files, rightclick them, Security
tab, Advanced, Owner tab. In Name list select Administrator or Admin-group and click OK. Click Add and in the "Enter the object...list" type a user or group account or Administrator. Click OK. In the group or user name list, click the account you want (e.g. Administrator), then tick the check boxes for permissions, e.g. Full Control [Allow].
0
 
FEOXCommented:
Assuming you did move the My Documents folder using Fixforyou's method (or through registry or through Environment variables), here is a VBA code that retrieves the "My Documents" folder of the current user:
'Set MyDocsPath to Current User's My Documents Folder:
Dim WshShell As Object
Dim MyDocsPath
Set WshShell = CreateObject("Wscript.Shell")
Set MyDocsPath = WshShell.SpecialFolders("MyDocuments")
Set WshShell = Nothing

'Display MyDocsPath:
MsgBox "My Documents folder: " & MyDocsPath

'More info here:
'http://msdn.microsoft.com/en-us/library/0ea7b5xe(VS.85).aspx

Open in new window

0
 
JohnRobinAllenAuthor Commented:
I am very excited about all the suggested solutions and will get back to EE probably tomorrow to describe the results. Many thanks for all this help. I wish that other commitments were not preventing me from responding today.
       john robin
0
 
JohnRobinAllenAuthor Commented:
I tried FEOX's code and it crashes on line 5:
     Set MyDocsPath = WshShell.SpecialFolders("MyDocuments")
A message appears "Run time error '13'"   Type mismatch.

I do not understand how to translate the other comments into VBA code to run on another user's machine.

     I hope the problem is solvable.

    j.r.a.




0
 
FEOXCommented:
Oops, try removing the "Set " on that line:

Use this, instead:
'Set MyDocsPath to Current User's My Documents Folder:
Dim WshShell As Object
Set WshShell = CreateObject("Wscript.Shell")
MyDocsPath = WshShell.SpecialFolders("MyDocuments")  'Don't use Set
Set WshShell = Nothing

'Display MyDocsPath:
MsgBox "My Documents folder: " & MyDocsPath

'More info here:
'http://msdn.microsoft.com/en-us/library/0ea7b5xe(VS.85).aspx

Open in new window

0
 
JohnRobinAllenAuthor Commented:
The solution works like a charm, but needs one small change for those of us who like to use "Option Explicit."

I added the line
     Dim MyDocsPath As String
and the code works perfectly.

Many, many thanks for such an easy-to-implement solution
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now