-1

.exe ファイル "PrintUsers.exe" を直接クリックすると、正しい出力が表示されます。しかし、Shell を使用して VBA でそれを行うと、結果は異なります。別のディレクトリでテキスト ファイルを見つけようとします。なんで?図を参照してください:

形

解決策: GetCurrentDir(buff, FILENAME_MAX); の代わりに GetModuleFileName(NULL, szEXEPath, 2048) を使用しています。

4

2 に答える 2

1

現在のディレクトリでファイルを見つけることをPrintUsers.exe期待しているようですdoNotEdit.txt

最善の解決策は、プログラム自体が配置されているのと同じディレクトリでファイルを検索するようにそのプログラムを変更することですが、それが不可能な場合は、プログラムを実行する前に Excel で現在のディレクトリを変更するようにします。

ChDir ActiveWorkbook.Path

を呼び出す前にShell


また、Yahya Hussein がコメントで述べたように、パス内のスペースが問題を引き起こす可能性があります。特定の状況には何もありませんが、将来問題が発生しないようにするために、次のようなものを使用することを検討してください

myFile = """" & ActiveWorkbook.Path & "\PrintUsers.exe"""
ChDir ActiveWorkbook.Path
Shell myFile, vbNormalFocus
于 2017-12-18T20:29:18.543 に答える