When I go to my batch file's location and open it, the batch file works. My batch file is simply:
cd .\data
dir/b/o:n > names.txt
As you can see, I'm in my current directory and moving down to the sub directory "data" and coping all the names and creating a file called names.txt
.
When I say
shell "location of file"
it opens the batch file, but the directory that is defaulted to is C:\my documents
, so my commands won't work because it cannot find the sub directory. I want this to be a dynamic batch file, and therefore i need to write something in VBA that will open the batch file under its current directory or something to this effect.
How do I do this?
The following should give you the effect you seek.
My test code is:
My test batch file is named TryShell.bat and contains:
I have placed my batch file in the same folder as the workbook containing my macro.
The statement
PathCrnt = ActiveWorkbook.Path
sets PathCrnt to the name of the directory containing the active workbook. You can set PathCrnt to whatever directory you require.When I call
Shell
, I have addedPathCrnt
as a parameter.In my batch file, I set the current directory to
%1
which is the first parameter.The
dir
command works as I wish because the current directory is my directory and not the system default directory.Hope this is clear.
C:\My Documents is probably the directory where your speadsheet is located. If you add
before launching your Shell command and that should work...
Alternatively, you could change your batch file to use an absolute directory instead of a relative one.