2016-07-25 1 views
0

Microsoft.Office.Interop.Word를 사용하여 다른 문서를 기반으로 새 문서를 만듭니다. Range.Text를 사용하여 검색/바꾸기 작업을 여러 번 반복하면 모든 작업이 빨라집니다. 그러나 한 경우 전체 서식이있는 전체 장을 복사해야하고 Range.Copy 및 Range.Paste를 사용하여 Range.Text (모든 서식을 다시 설정 함) 대신 복사해야합니다. 그것들은 작동하지만, 약 450 단어의 테스트 챕터에서는 40 초 (대개 Range.Text를 사용하기 위해 동일한 코드를 변경할 때 1 초 미만)가 소요됩니다.(Interop.Word) Range.Copy-Range.Paste work slow

질문 : Range.Copy/Range.Paste를 더 빨리 만들 수있는 방법이 있습니까? 필자가 필요로하는 것은 특정 텍스트를 찾아 모든 테이블, 서식 등으로 다른 파일에 복사하는 것입니다. Word에서 서식있는 텍스트를 복사하려면

+0

많은 문제가 있습니다. 붙여 넣기의 범위를 제한 할 수있는 방법이 있지만, 모든 서식과 OLE 자동화를 유지하고자한다는 질문에 방금 말했습니다. –

+0

@smirnov, Word interop 대신 OpenXML을 사용 해본 적이 있습니까? Word Interop은 매우 기발한 것이므로 실행해야하는 각 컴퓨터에 특정 설정 및 사용 권한이 필요하며 Microsoft는 새로운 Windows 릴리스 및/또는 서비스 팩에서 이와 관련된 요구 사항을 변경합니다. –

+0

설치가 문제되지 않습니다. 동일한 조직 내의 일부 내부 사용자가 계약 작성을 통해 일상적인 작업을 자동화 할 수있게 해주는 작은 1 회성 데스크톱 도구입니다. 그들이 기본 계약을 변경하면 계약의 기존 문서와 변경을위한 템플릿을 가져 와서 다양한 텍스트 (날짜, 이름, 그림 등)를 복사합니다. 계약의 범위 (내 질문의 대상). 범위는 다음을 포함 할 수 있습니다. 챕터, 테이블 등이 있으므로 형식이 동일하게 유지되어야합니다. 모두 정상적으로 작동하지만 느린 복사로 인해 사용자는 완료하는 데 약 1 분 정도 기다려야합니다. – Alex

답변

2

당신은 내부적 월 클립 보드를 사용하는이 방법으로 Range.Copy()와 Range.Paste()를 사용하여

targetRange.FormattedText = sourceRange.FormattedText; 

피처럼 RangeFormattedText 속성을 사용할 수 있습니다 보안 문제가 발생하거나 예기치 않은 결과가 발생할 수 있습니다.

+0

이 점을 지적 해 주셔서 감사합니다. 이전에이 속성을 사용해 보았지만 대상 및 소스 범위에 대해 다른 Word.Application을 사용했기 때문에 실패했으며 FormattedText는 동일한 응용 프로그램에서만 작동합니다. – Alex