2017-05-18 5 views
0

Visual Studio에서 2010 년 추가 기능 프로젝트를 사용 중이며 MSDN 가이드에 따라 리본의 사용자 지정 기능이있는 새 탭을 만들었습니다 . 나는 인터넷 검색을했는데, C#을 사용하여 책갈피를 찾은 다음 (또는 가능한 경우) SQL 쿼리에서 책갈피 이름을 사용하여 채우는 예제를 찾은 것 같습니다. 내가 작업중인 문서에는 수십 개의 북마크가있을 수 있으며 수백 개의 문서가 있습니다. 이 프로세스를 자동화하는 것이 최우선 과제입니다.C#을 사용하여 프로그래밍 방식으로 Word 2010 추가 기능에서 책갈피를 찾고 채 웁니다.

+0

글쎄, 당신은 [즐겨 찾기] 속성에서 문서의 책갈피를 얻습니다. (https://msdn.microsoft.com/en-us/library/microsoft.office.interop.word._document.bookmarks (v) = office.14) .aspx) – stuartd

+0

고맙습니다. @stuartd –

답변

1

기본적으로 단어 문서를 자동화하려는 경우 (단어 북마크를 통해 단어 문서 템플릿 작성) 다음은 내가 일반적으로 수행하는 방법입니다.

  • 복사 템플릿
  • 템플릿을
  • 저장에서 원하는 형식
  • 템플릿을 복사

당신이 가지고 당신이 당신의 워드 문서 내에서 교체하는 각 섹션 삭제 해당 위치에 대한 북마크를 삽입하십시오 (영역에서 텍스트를 입력하는 가장 쉬운 방법).

항상이 작업을 수행하는 함수를 만들고 결국 문서 내 책갈피를 바꾸기 위해 모든 텍스트뿐만 아니라 경로를 전달합니다. 함수 호출은 때때로 길어질 수 있지만, 그것은 나를 위해 작동합니다.

Application app = new Application(); 
Document doc = app.Documents.Open("sDocumentCopyPath.docx"); 


if (doc.Bookmarks.Exists("bookmark_1")) 
    { 
     object oBookMark = "bookmark_1"; 
     doc.Bookmarks.get_Item(ref oBookMark).Range.Text = My Text To Replace bookmark_1; 
    } 
    if (doc.Bookmarks.Exists("bookmark_2")) 
    { 
     object oBookMark = "bookmark_2"; 
     doc.Bookmarks.get_Item(ref oBookMark).Range.Text = My Text To Replace bookmark_2; 
    } 

      doc.ExportAsFixedFormat("myNewPdf.pdf", WdExportFormat.wdExportFormatPDF); 

((_Document)doc).Close(); 
((_Application)app).Quit(); 

이 코드는 모든 값을 함수에 전달하지 않는 한 실행시켜야합니다.

가끔 많은 양의 필드가 있으면 값을 포함 할 객체/클래스를 만들 수 있습니다.

더 많은 예제가 필요하다면 블로그 게시물에서도 작업하고 있으므로 사용 사례에 대해 충분히 명확하지 않은 경우 더 자세하게 설명 할 것입니다.