2014-03-26 107 views
1

我的Excel VBA宏一個64位的命令執行殼Ghostscript的創建的文件gs.cmd含有下列行:上從Excel VBA

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" @gsparams 
echo %ProgramFiles% 
pause 

然後執行Shell "gs.cmd"

Ghostscript生成的PDF文件錯過了幾個鏈接,控制檯顯示C:\Program Files (x86)

如果我從開始菜單啓動cmd.exe並執行相同的gs.cmd腳本,則生成的PDF文件是正確的,並且控制檯顯示C:\Program Files

該PDF文件包含許多36「x24」CAD圖紙,其中主要是矢量內容和一些大的位圖,其中包含數百個書籤和數千個在pdfmarks文件中定義的鏈接。

我在執行過程中看到的唯一差別是一個似乎是32位而另一個是64位。

我不明白爲什麼Ghostscript在64位實例中做出了完美的工作,但是在32位實例中正確執行了大部分工作,並且僅僅錯過了大約5%鏈接的創建。我希望它要麼失敗,要麼工作。

我搜索了一下,看看我是否可以讓Shell在64位環境中運行,但我沒有找到解決方案。

我該如何解決這個問題?

+0

@yms:我也不明白這個問題。我只是想列出測試和運行環境之間的差異。我嘗試了'Shell'gs.cmd「'和'Shell」cmd/c gs.cmd「',它們都是一樣的。也許Ghostscript使用一些環境變量? – stenci

+0

有趣...確實可能是這種情況。 – yms

回答

1

如何創建第二個.cmd文件來啓動所需的cmd版本?

它可能看起來像這樣:

launcher.cmd:

%SYSTEMROOT%\System32\cmd.exe /c c:\temp\gs.cmd 

的cmd.exe的32位版本將裏面%SYSTEMROOT%\Syswow64\在64個系統。在32位系統上,我猜這個腳本會使用唯一可用的cmd.exe(%SYSTEMROOT%\System32\cmd.exe),所以沒有問題。

+0

謝謝!我加了'/ c' – stenci