2011-08-08 2 views
0

검색 기준에 따라 북마크를 추가하는 문서 처리라는 단어를 자동화하고 있습니다. 코드는 훌륭하게 작동하지만 문서에 테이블이있을 때 실패합니다. 그것은 정상적인 문서에서 라인 당 줄 수있는 텍스트를 읽을 때처럼 보이지만, 텍스트의 경우에는 텍스트에 열과 행이 있습니다. 따라서 텍스트를 검색 할 때 텍스트가 한 줄에 두 줄로 작성되면 결과는 괜찮지 만 WORD API 텍스트를 선택하면 같은 열 대신 두 줄의 텍스트가 선택됩니다. 나는 텍스트를 검색하는 경우표 내에 북마크를 만드는 방법

 
col1   col2 
This is  Second Column 
Some Text 

이제 "이 일부 텍스트가"나는 제대로 그것을 가지고 있지만 그것을 선택했을 때 나는

reg = New Regex(result.token(j).ToString()) 
       Dim m As Match = reg.Match(_doc.Range.Text, 0) 
       pos = m.Index ' start position is fine 

       '' start is the starting position of the token in the content... 
       ''length is the size of the token 
       len = result.token(j).ToString().Length ' text length is fine 

       rng = _doc.Range(pos, len + pos) ' this copies the text from the second col 
       _doc.Bookmarks.Add(bookmarkName, rng) 
+0

미안 : 길이로, 당신은 전체 셀을 선택할 수 있습니다, 코드이 방법을 적용하려고'지금은 텍스트를 검색하면 "이 일부 텍스트입니다"나는 그것을 가지고 정확하게'w 좋아, 그럼 뭐가 잘못 됐니? 'This is'와'Some Text'는 두 개의 서로 다른 행에 있습니까? – JMax

+0

혼란을 드려 죄송합니다. 실제로 북마크를 추가하려면 정규 표현식을 사용하여 텍스트를 검색하고 문자열이 존재하고 텍스트의 시작 위치를 알려줍니다. 그런 다음 텍스트를 _doc.Range (pos, lenofString + pos)로 선택하면 실제 텍스트를 올바르게 선택해야합니다. 그래서 내 예제에서, 내가 찾고있는 텍스트가 "This is some text"라면이 코드는 그것을 선택해야하지만 "This is Second column"을 선택하면 텍스트가 쓰여졌는지 알 수 없다는 것을 의미합니다 셀 안에 있고 행으로 읽습니다. 그것은 당신에게 어떤 의미가 있습니까? – Kashif

답변

0

대신 텍스트를 선택 "이것은 두 번째 열은"있어요 나는 당신의 질문을 이해하지 않는,

rng = Selection.Cells(1).Range 
+0

답변을 주셔서 감사하지만 제 경우에는 문서에 표가 포함되어 있지 않습니다. 검색하려는 텍스트는 표 셀 내부 또는 임의의 표 외부 (평면 텍스트)에 쓸 수 있습니다. 찾은 텍스트가 표 셀에 기록되었는지 어떻게 알 수 있습니까? 테이블이 없다면 코드는 훌륭하게 작동하지만 키워드가 포함 된 테이블이 있으면 올바르게 작동하지 않습니다. – Kashif

+0

알 겠어. 그래서, 당신은 시도 할 수 있습니다 :'Selection.Information (wdWithInTable) = True Then''하지만 여기서 바로 테스트 할 수 없다면, * 작동해야합니다. – JMax

+0

JMax가 도와 주셔서 감사합니다. 나는이 문제에 접근하는 방식을 바꾸었다. Word의 Find 메서드를 사용하여 정보를 추출한 다음 책갈피로 변환합니다. 내 접근 방식의 문제점은 문서를 읽을 때 텍스트뿐만 아니라 일부 추가 메타 문자 나 기호가 내 검색을 손상시키고 있다는 점입니다. – Kashif

관련 문제