2011-03-25 3 views
2

VB6 응용 프로그램에서 Word를 자동화하고 있으며 호스트 컴퓨터가 Word 2007 또는 2010을 사용하지만 Word 2003을 실행하는 컴퓨터에서는 예외가 발생합니다. 예외는Word 2003 대 2007/2010 자동화

입니다

런타임 오류 '4605': "개체가 테이블 행의 끝을 참조하므로이 메서드 나 속성을 사용할 수 없습니다."

For num = 1 To breakArrCount 
    Set myRange = oworddoc.Paragraphs(breakArr(num)).Range 
    With myRange 
     On Error Resume Next 
     .Collapse Direction:=wdCollapseEnd 
     .InsertBreak Type:=wdPageBreak 
    End With 
Next 

배열, breakArr에서, 상기 단락의 인덱스를 저장한다 :

예외 페이지 나누기를 삽입하려고 줄에 다음 루프의 일곱 번째 반복에 슬로우 문서는 페이지 나누기가 뒤따라야합니다.

흥미롭게도 예외 (예 : 6 번째 반복)가 발생하기 전에 루프에서 빠져 나와 생성 된 문서를 볼 경우 페이지 나누기 (처음 6 페이지)가 다른 지점에 삽입됩니다. Word 2007/2010 (2003 년보다)

왜 차이가 있습니까? 아무도 내가 다르게해야 할 일을 알고 있습니까?

감사합니다.

답변

2

Multiversion 대상 Word 자동화 응용 프로그램을 개발 한 세계에 오신 것을 환영합니다.

심각하게도 이러한 유형의 문제에 대해서는 + 산들 +을 칠 것입니다. 다른 방법으로 다른 위치에 페이지 나누기를 삽입하는 다른 버전의 워드 핸들을 알고 있습니다. 나는 다수의 단어 문서를 지능적으로 하나의 정상적인 (마스터가 아닌) 문서로 병합하는 addin을 개발하는 데 수 많은 문제가있었습니다.

가장 좋은 것은 이런 식의 예외가 발생할 때 특정 버전의 Word를 처리하기 위해 예외적 인 루틴을 빌드하고 예외 루틴을 작성하는 것입니다. 다행히도, 당신은 많은 사람을 만날 수는 없지만 거기에 많은 것이 있다고 말할 수 있습니다.

이 특별한 경우에는 선택한 단락이 테이블에있을 가능성이 높습니다. 그러면 파라의 끝 부분으로 접히고 무언가를 삽입하려고합니다. 이는 셀 마커의 끝 부분을 엉망으로 만들고 있습니다. 다르게 다른 버전의 워드 핸들. 어떤 경우에는 (특히 잊어 버렸습니다.) 테이블의 VERY LAST CELL에서 그렇게하면 문서를 저장할 때 문서가 손상되지만 문서를 다시 열 때까지는 알 수 없습니다.

테이블에 있음을 감지하면이 특정 문제를 해결할 수 있습니다. 그렇다면 끝까지 축소 한 다음 한 개의 문자 (가능한 경우 셀이 비어있을 수 있음)를 백업 한 다음 페이지 나누기.

관련 문제