2017-12-20 7 views
0

에서 실행합니다.VBA 다음과 같이 내가 코드를 쉘 명령을 실행하지만 다른 디렉토리

Cpdf.exe는 내 Active 통합 문서와 같은 경로에 있습니다. ChDir 명령이 트릭을 수행하지 않았습니다.

내가 코드를 실행하면, 다음과 같은 프롬프트에서

내부 명령으로 인식되지 않는 'cpdf'....

그리고 왼쪽 오전 얻을 :

C : \ Users \ ksmith \ Documents

이렇게하면 명령이 해당 폴더에서 실행하려고했기 때문에 실패한 것입니다.

VBA의 원하는 폴더에서 셸을 어떻게 실행합니까? 일부 사람들이 제안했듯이 ChDir은 트릭을 수행하지 않는 것 같습니다 ...

+0

는 명령 줄에서 실행 파일의 전체 경로를 지정할 수 있습니다 정도의 변화를 방지 예배 규칙서? 아마도 vba로 변환하기 전에 명령 줄에서 작업하고 있을까요? 그런 다음 항상 BATCH 파일로 실행하는 옵션. – QHarr

+0

통합 문서가 C : 드라이브에 있습니까? 아니면 다른 드라이브? 예를 들어 통합 문서가''L : \ Temp1 \ Temp2 ''에 있다면''ChDir''가 "현재 디렉토리"를 추적하기 때문에''ChDri''가 유용 할 수 있도록''ChDrive ""할 필요가 있습니다 각 드라이브에 기본값이며 현재 드라이브의 "현재"디렉토리를 사용합니다. – YowE3K

+0

cool. 나는 너에게 알려주려고한다. 통합 문서가 네트워크 드라이브에 있습니다. – Kam

답변

0

ChDir 명령은 지정된 드라이브의 "현재"디렉토리 만 변경하지만 현재 어떤 드라이브가 현재 "현재"인지는 영향을주지 않습니다.

  • 컴퓨터에 "C"가있는 경우

    그래서, "현재"디렉토리가있는 드라이브 "C : \ 사용자 \ ksmith 문서 \"및

  • 당신은 또한 "L이 "구동되는"현재 L "디렉토리는": \ TEMP1 \ TEMP2 "

다음

,369을 실행 : L ABC \ 데프" 및
  • 통합 문서가 들어있는 디렉토리는 "\
    ChDir ActiveWorkbook.Path 
    

    은 "L"드라이브의 "현재"디렉토리를 "L : \ Temp1 \ Temp2"로 변경하지만 "현재"드라이브는 계속 "C"이고 C 드라이브의 "현재" 디렉토리는 계속해서 "C : \ Users \ ksmith \ Documents"가됩니다.


    따라서 "현재"드라이브도 변경해야합니다. 사용하여 당신은 당신이 할 수있는 (그것이 UNC 지정된 드라이브에서 작동하지 않습니다 IE) 매핑 된 드라이브가 제공 :

    ChDrive ActiveWorkbook.Path 
    ChDir ActiveWorkbook.Path