【发布时间】:2014-04-09 01:51:16
【问题描述】:
考虑一下我有以下几点:
- 一个 Excel 工作簿,生成一个 .txt 文件(通过宏)。
- 一个可执行文件 (
.exe) 可以解析这个 .txt 文件。
我的目标是编写以下算法:
- 让用户在工作表中输入他的数据。
- 根据用户输入的内容准备
.txt文件。 - 将新创建的
.txt文件传递给外部程序(.exe)。
现在,前两个步骤完美运行,我可以生成正确的.txt 文件。当我需要将它传递给外部可执行文件时,问题就来了。以下是已尝试和观察到的内容:
使用
"C:\path\to\program.exe" "C:\path\to\file.txt"调用Shell()(编辑:作为单个字符串);很简单,但这不起作用:外部.exe不喜欢被赋予路径。我还尝试将命令直接输入到 Windows 的Execute实用程序中:相同。 似乎给程序提供.txt的路径是不够的。将
.txt文件拖到程序的.exe上即可!外部可执行文件正常工作。 在这里,就好像我将“文件”传递给了程序,而不仅仅是它的路径。作为一个 UNIX 用户,这对我来说听起来很无意义(没有流或管道的概念),所以也许我在这里遗漏了一些东西......
现在,这是我的问题。将文件拖放到可执行文件上时,Windows 如何“翻译”它?显然,它并没有将其翻译成“将文件的路径作为程序的第一个参数传递”。如何将.txt 文件传递给可执行程序,而不像我第一次调用Shell() 那样传递它的路径?
其他一些注意事项:
- 我在 Windows 7 上使用 Microsoft Office Excel 2010。我已经快要死了,谢谢你的关心。
- 我说的这个外部
.exe不能修改和重新编译(这太棒了),这很棘手。无论发生什么,我都必须照原样使用它。 - 如果您给我正确的命令/修复,使用
Shell()不是问题。我也尝试在VBA.CreateObject("WScript.Shell")上调用Run,结果相同。
【问题讨论】: