gpt4 book ai didi

vba - 在 VBA 中调用批处理文件无法正常工作

转载 作者:行者123 更新时间:2023-12-04 05:56:40 27 4
gpt4 key购买 nike

我正在尝试创建一个可供其他人使用的程序。目前,我的文件在目录 C:\Documents and Settings\jpmccros\Desktop\test

这个目录包含我的 macro.xlsm , names.bat ,以及另一个名为 Data 的子目录.

批处理文件 names.bat执行以下操作:

cd data

dir/b/o:n > names.txt

这正是我想要它做的。当我打开批处理文件(位于 C:\Documents and Settings\jpmccros\Desktop\test\ 目录中时,MS DOS 命令提示符从 C:\Documents and Settings\jpmccros\Desktop\test\ 开始,然后运行我的命令并生成我的文件 names.txt ,并将其准确放置在我想要的位置。

当我打开 macro.xlsm并运行macro1,它调用批处理文件打开。

这是我的宏命令:
Dim names_txt, names_bat, full_name, filename, folder As String
Dim position As Integer
Dim pathcrnt As String
full_name = ThisWorkbook.FullName
filename = ThisWorkbook.Name
position = InStr(1, full_name, filename, 1)
position = position - 1
folder = Left(full_name, position)

names_bat = folder & "names.bat"

Shell names_bat, vbMaximizedFocus

现在这是我的问题:宏实际上打开了批处理文件,或者至少它打开了 MS DOS 命令提示符。但是,当它打开批处理文件时,初始目录为:
C:\Documents and settings\jpmccros\My Documents
我需要这个批处理文件和宏是动态的,因此我需要批处理文件来打开它的显示目录。这是怎么回事?是否有我可以在批处理文件上写入的命令?它是VBA中的东西吗?

最佳答案

您使用 activeworkbook.path 访问批处理文件的方法作品。 VBA 代码相对于其当前位置找到它,并打开它。

但是,我遇到的问题是一旦 VBA 打开批处理文件,命令提示符就会在目录 C:\Documents and Settings\jpmccros\My Documents\ 中启动。每次。

您的方法不会绕过此问题。我确实创建了一个解决方案(并且也使用了您的 activeworkbook.path 想法)。而不是调用我的批处理文件,我只是在 VBA 中创建一个并打印出一行 cd var_activeworkbook.path & "\data" .这样,我就可以让 VBA 搜索当前目录并将其保存为变量。

一探究竟:

Dim pathcrnt As String, batch_file As Integer

pathcrnt = ActiveWorkbook.Path
batch_file = FreeFile()
Open pathcrnt & "names.bat" For Output As #batch_file
Print #batch_file, "cd " & pathcrnt & "\data"
Print #batch_file, "dir/b/o:n > names.txt"
Print #batch_file, "pause"
Close #batch_file

Shell pathcrnt & "names.bat", vbMaximizedFocus

关于vba - 在 VBA 中调用批处理文件无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9442467/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com