我正在運行Windows 7x64和Excel 2010x32。我使用ExecCmd(一個等待命令提示進程完成的Microsoft函數)通過vba調用32位dos程序(用Fortran編寫)。我向這個函數發送一個命令行,它明確包含程序路徑和輸入文件和輸出文件的路徑。通過shell運行程序
這在我的PC上以及在運行相同軟件(OS和Office)的公司PC上運行良好,並且我可以一般訪問C:驅動器。
在其他公司PC上,如果沒有對C:驅動器的一般訪問權限,則這不起作用 - 即dos程序不生成輸出文件。在這些PC上,我仍然可以手動在命令提示符下運行程序。只是調用此命令提示符不能通過Excel VBA工作。
現在奇怪的是,我可以通過在命令行開始處添加「cmd.exe/c」成功運行這些程序之一。這似乎是在命令提示符(!)內運行命令提示符。另一個程序(順便說一下,它比較大)在這些PC上通過vba完全不起作用。我需要能夠爲其他員工提供有用的東西。
任何人都可以點亮這裏發生的事情,並建議解決?我可以通過一些代碼,但我認爲上面應該是自我解釋。
我認爲是的,你應該編輯你的問題,並粘貼你有幾個關鍵代碼行試過。 –
您運行的命令提示符可能具有管理權限,可能是您從Excel運行時缺少的。它可能與錯誤的工作目錄有關。有點太難以猜測正確。 –
「32位DOS程序」在條款上並不矛盾,但我不認爲這是你的意思;一方面,DOS程序不能在64位版本的Windows上運行。你的意思是一個32位的命令行程序嗎? –