LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 35,218
Default ChDir and ChDrive

ChDir won't work with UNC paths. But you can use a Windows API that will work
with either UNC paths or Mapped drives.

Here's an example I saved from a previous post:


And here's an example of that API call. It uses application.getopenfilename,
but you'll see how to use it.

Option Explicit
Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long
Sub ChDirNet(szPath As String)
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub
Sub testme01()

Dim myFileName As Variant
Dim myCurFolder As String
Dim myNewFolder As String
Dim Wkbk as workbook

myCurFolder = CurDir
myNewFolder = "\\share\folder1\folder2"

On Error Resume Next
ChDirNet myNewFolder
If Err.Number < 0 Then
'what should happen
MsgBox "Please change to your own folder"
Err.Clear
End If
On Error GoTo 0

myFileName = Application.GetOpenFilename(filefilter:="Excel Files, *.xls")

ChDirNet myCurFolder

If myFileName = False Then
Exit Sub 'user hit cancel
End If

'do your stuff to open it and process it.
Set wkbk = workbooks.open(filename:=myfilename)

'....

End Sub

Conan Kelly wrote:

Hello all,

I have a some code that I use to alter a handful of personal files on a
local drive.

I'm trying to set this code up to store the current directory, change to a
specific folder on a local drive, then change the current directory back to
the one that was current before the code ran.

I just figured out that I will have to use both ChDir and ChDrive in order
to do this, and then use both to revert back to original directory before
running the code. No big deal, IF THE NETWORK SHARE IS MAPPED TO A DRIVE
LETTER!!! Most of the network locations that I work in are mapped to drive
letters. But on the rare occasion, I will be working in the network
location directly, ie: \\Server\Share.

It looks like changing CurDir from a network location to a local directory
is no big deal. But I'm having a hard time trying to figure out how to
change from a local to a network location.

If my original directory is...

\\Server\Share

...and I want to go to...

C:\Folder\Subfolder

...then my code would look something like this...

'CurDir would be "\\Server\Share" at this point.
pstrCurrFolder = CurDir
'ChDrive "C" 'it appears this line is not neccesary when going
from network to local
ChDir "C:\Folder\Subfolder"

But it doesn't look like I can revert back to my network location, after all
the processing, if it is not mapped to a drive letter.

ChDir pstrCurrFolder 'only works if pstrCurrFolder is another
location on the current drive.
ChDrive "\\Server" 'No workie!!!

Does anyone know of a way to accomplish what I'm trying to do?

Thanks for any help anyone can provide,

Conan Kelly

---------------------------
"Smokin' weed kills your brain cells. Drinkin' only screws up your
liver...ya got 2 a those."
- Earl Hickey (NBC's "My Name is Earl")


--

Dave Peterson
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
ChDir statement neta[_6_] Excel Programming 1 June 15th 06 06:49 PM
ChDrive error (server path) Marcotte A Excel Programming 6 November 2nd 05 07:16 PM
Problems with ChDrive and ChDir Sophie Excel Programming 5 December 2nd 04 04:33 PM
Problems with ChDrive, ChDir Sophie Excel Programming 4 November 29th 04 09:35 AM
Links and Chdir Hansol Excel Programming 3 April 17th 04 08:52 PM


All times are GMT +1. The time now is 12:14 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"