저는 Windows 7x64 및 Excel 2010x32를 사용하고 있습니다. 나는 명령 프롬프트 프로세스가 끝나기를 기다리는 Microsoft function 인 ExecCmd를 사용하여 vba를 통해 32 비트 dos 프로그램 (Fortran으로 작성)을 호출합니다. 명시 적으로 프로그램 경로와 입력 파일과 출력 파일의 경로를 포함하는이 함수에 명령 줄을 보냅니다.쉘을 통해 프로그램 실행
내 PC와 동일한 소프트웨어 (OS 및 Office)를 실행하는 회사 PC에서 정상적으로 실행되며 C : 드라이브에 대한 일반적인 액세스 권한이 있습니다.
C : 드라이브에 대한 일반 액세스 권한이없는 다른 회사의 PC에서는 이것이 작동하지 않습니다. 즉 dos 프로그램이 출력 파일을 생성하지 않습니다. 이 PC에서는 명령 프롬프트에서 수동으로 프로그램을 실행할 수 있습니다. 이 명령 프롬프트를 호출하면 Excel VBA를 통해 작동하지 않습니다.
이상한 점은 명령 줄 시작 부분에 "cmd.exe/c"를 추가하여 이러한 프로그램 중 하나를 성공적으로 실행할 수 있다는 것입니다. 명령 프롬프트 (!)에서 명령 프롬프트를 실행하는 것으로 보입니다. 덧붙여 말하면, 다른 프로그램은이 PC에서 vba를 통해 전혀 작동하지 않습니다. 나는 다른 직원들에게 일하는 것을 제공 할 수 있어야한다.
여기에서 어떤 일이 일어나고 있는지 알려주고 해결 방법을 제안 할 수 있습니까? 나는 약간의 코드를 지나칠 수 있었지만 위의 내용은 자명하다.
나는 네가 질문을 편집하고 가지고있는 코드의 핵심 줄을 붙여야한다고 생각합니다. 시도했다. –
명령 프롬프트에서 관리자 권한을 가질 수 있으며 Excel에서 실행할 때 부족한 명령 프롬프트 일 수 있습니다. 잘못된 작업 디렉토리와 관련이있을 수도 있습니다. 너무 추측 하기엔 너무 어렵습니다. –
"32 비트 DOS 프로그램"이라는 용어는 모순점이 아니지만 그것이 의미하는 바가 아닐 것이라고 생각합니다. 한 가지로 DOS 프로그램은 64 비트 버전의 Windows에서 실행되지 않습니다. 32 비트 명령 줄 프로그램을 의미합니까? –