Jas*_*son 8 windows vba cmd batch-file
当我转到我的批处理文件的位置并打开它时,批处理文件可以正常工作.我的批处理文件很简单:
cd .\data
dir/b/o:n > names.txt
Run Code Online (Sandbox Code Playgroud)
如您所见,我在当前目录中并向下移动到子目录"data"并处理所有名称并创建一个名为的文件names.txt
.
当我说
shell "location of file"
Run Code Online (Sandbox Code Playgroud)
它会打开批处理文件,但是默认的目录是C:\my documents
,所以我的命令无法工作,因为它找不到子目录.我希望这是一个动态批处理文件,因此我需要在VBA中编写一些东西,它将打开当前目录下的批处理文件或此类效果.
我该怎么做呢?
以下内容应该为您提供所寻求的效果.
我的测试代码是:
Option Explicit
Sub TryShell()
Dim PathCrnt As String
PathCrnt = ActiveWorkbook.Path
Call Shell(PathCrnt & "\TryShell.bat " & PathCrnt)
End Sub
Run Code Online (Sandbox Code Playgroud)
我的测试批处理文件名为TryShell.bat,包含:
cd %1
dir *.* >TryShell.txt
Run Code Online (Sandbox Code Playgroud)
我已将我的批处理文件放在与包含我的宏的工作簿相同的文件夹中.
该语句PathCrnt = ActiveWorkbook.Path
将PathCrnt设置为包含活动工作簿的目录的名称.您可以将PathCrnt设置为您需要的任何目录.
当我打电话时Shell
,我已添加PathCrnt
为参数.
在我的批处理文件中,我将当前目录设置%1
为第一个参数.
该dir
命令按我的意愿工作,因为当前目录是我的目录而不是系统默认目录.
希望这很清楚.
C:\My Documents 可能是电子表格所在的目录。如果你添加
ChDir "C:\TheFolderWhereYourBatchIs"
Run Code Online (Sandbox Code Playgroud)
在启动 Shell 命令之前,这应该可以工作......
或者,您可以更改批处理文件以使用绝对目录而不是相对目录。
归档时间: |
|
查看次数: |
79835 次 |
最近记录: |