2017-01-23 1 views
1

는 다음 코드를 사용하여 하이퍼 링크를 따라 PDF 파일을 열 파워 포인트 VBA 스크립트를 사용하고 있습니다 :PowerPoint VBA와의 하이퍼 링크를 따르기 위해 오류 검사를 수행하려면 어떻게합니까?

ActivePresentation.FollowHyperlink Address:=sFile 

변수 sFile 이전 코드가 생성 로컬 파일 경로, 그냥 문자열입니다. 하이퍼 링크를 따라 가기 전에 주소에 파일이 있는지 확인하는 오류 교정을 시행하고 싶습니다. 파일 경로가 올바르지 않으면 "런타임 오류 '-2147467259 (80004005)': 프레젠테이션 (알 수없는 멤버) : 지정한 파일을 열 수 없습니다."라는 오류 메시지가 나타납니다.

본질적으로 파일이 존재하지 않는다는 것을 알려주고 있습니다. 코드가 전체 파일 경로 문자열을 올바르게 생성하기 전에 하이퍼 링크를 여는 행으로 실수로 코드를 실행하여이 오류를 발견했습니다.

어쨌든 누군가가 간섭하고 파일 이름을 변경하는 경우 스크립트 오류가 발생하는 대신 유익한 오류 메시지를 표시하려고합니다.

+0

'sFile'의 더 좋은 이름은'linkPath' 또는'pdfPath' 또는'pdfLinkPath' 일 수 있습니다; 헝가리 표기법에 대한 [* 틀린 코드보기 틀리게하기 *] (https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/)를 참조하십시오. –

+0

모든 변수 이름의 시작 부분에 어떤 변수가 있는지를 나타 내기 위해 소문자를 사용합니다. 즉 '정수'의 경우 'i'또는 '문자열'의 경우 's'입니다. 거기에서'File'이나'Counter' 또는 어떤 이름과 같은 어떤 이름을 부여합니다. – ilarson007

+1

예, 그렇습니다. * 정확하게 "시스템 헝가리 인"이합니다. 그리고 그것은 "앱 헝가리어"의 약점입니다. 접두어를 사용하는 실제로 유용한 * 방법입니다 (이 기사를 읽으십시오, 훌륭합니다!). 식별자의 변수 유형을 인코딩하는 것은 아무런 목적도 없습니다. –

답변

1
If Len(Dir$(sFile)) > 0 Then 
    '' The file's there, follow the link 
Else 
    ' The file's missing 
End if 
+0

이 코드는 작동하지 않습니다. 필자는 사용자가 작업하고있는 전체 디렉토리를 옮기는 경우를 대비하여 철저히 명시된 완전한 파일 경로를 가지고 있지 않습니다. 그래서, 내 문자열은 다음과 같습니다. "Sub Directory 1 \ Sub Directory 2 \ Filename.pdf" – ilarson007

+0

대상 파일의 위치를 ​​모를 경우 계산해야합니다. ActivePresentation.Path에서 경로를 추출하고 sFile 변수에 접두사를 붙일 수 있습니다. –

+0

@ JamieGarroch 내가 프리젠 테이션 경로를 연결 한 후 작동합니다 :'Len (Dir $ (ActivePresentation.Path & "\"& sFile))> 0 Then'' – ilarson007

관련 문제