2013-04-28 1 views
0

작동하지 않습니다!직접 액세스 내가이 가끔 작동하지 않습니다 2003</p> <pre><code>... dim ovp as visio.page dim ovs as visio.shape ... set ovs = ovp.shapes("#shapename#") ...do something with the shape </code></pre> <p>Visio의 형태를 접근에 관한 질문이

그것은 shape not found 또는이 항상 작동

... 
dim ovp as visio.page 
dim ovs as visio.shape 
... 
for each ovs in ovp.shapes 

    if ovs.name = "#shapename#" then 
    ...do something with the shape 

    end if 

next 

유사한

같은 오류를 제공합니다. 왜 그런가? 당신이 set ovs = ovp.shapes("#shapename#")을 수행 할 때 VBA는 대소 문자를 구분하는 방식으로, 모양 이름을 정확히 일치를 찾고 있습니다

:

답변

1

여기 가능성이다.

당신이 Option Compare Text이 모듈에 정의되어있는 경우가 if ovs.name = "#shapename#"

는, 다음은 대소 문자를 구분하지 않고 비교를 할 것입니다. 당신은 당신은의 경우 불일치가
  • Option Compare Text를 선언 한

    1. :

      그래서, 특정 상황에서, 당신은 다음의 두에 해당 경우이 설명하는 결과를 얻을 수 있습니다 모양 이름. 예 : 도형의 이름은 "#ShapeName#"이지만 "#shapename#"을 검색합니다.

    이 내용이 적용될 수 있는지 명확히 설명 할 수 있습니까?

  • +0

    나는 다음날 Visio에 액세스 할 수 없지만 이것은 아마도 그 이유 일 것입니다 –

    0

    여기서 # shapename #을 얻고 있습니까? 테스트에서 foreach ovs 내부에 debug.print ovs.name을 넣어 해당 콜렉션에서 처리중인 이름을 확인하십시오.