2013-11-14 4 views
1

나는 사용자 기준에 따라 AS400 데이터를 쿼리하고 ListView 컨트롤에서 결과를 반환하는 간단한 C# Winforms 응용 프로그램을 작성했습니다. Button_Click()에서 헤더 및 데이터를 .txt 파일에 저장합니다. 아래 편지 병합 Word 문서의 DataSource로 .txt 파일을 사용하려고합니다.oWord.Documents.Open (oTemplatePath)에서 프로그램이 멈 춥니 다?

코드가 oWrdDoc = oWord.Documents.Open(oTemplatePath);에 도달하면 프로그램이 멈추는 것 같습니다. 아무 것도 일어나지 않아 다음 라인으로 넘어갈 수 없습니다. 누구든지 제가 잘못하고있는 것에 대한 아이디어가 있습니까?

public void Print(string docLoc, string docSource) 
     { 
      try 
      { 
       Word.Application oWord = new Word.Application(); 
       Word.Document oWrdDoc = new Word.Document(); 
       oWord.Visible = true; 
       Object oTemplatePath = "C:\\Users\NAME\\Desktop\\B-AIAddChgDual10-06-NEW.doc"; 
       oWrdDoc = oWord.Documents.Open(oTemplatePath); 
       Object oMissing = System.Reflection.Missing.Value; 
       oWrdDoc.MailMerge.OpenDataSource("C:\\Users\\NAME\\Desktop\\Test2.txt", oMissing, oMissing, oMissing, 
        oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); 
       oWrdDoc.MailMerge.Execute(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show("Source:\t" + ex.Source + "\nMessage: \t" + ex.Message + "\nData:\t" + ex.Data); 
      } 
      finally 
      { 
       // 
      } 
     } 

편집 : 나는 인스턴스가 파일을 말하는 대화 상자를 가져 너무 Visible = true로 설정 한 새 Word 인스턴스를하지 않았다 (에 의해 자신 ???) 편집을 위해 잠겨 밝혀 그것은이었다 이전에는 볼 수 없었던 읽기 전용 버전을 열어서 모든 것이 처리 과정에서 멈추는 것처럼 보이게했습니다. 변경 사항을 반영하기 위해 위의 코드를 수정했습니다.

내 자신의 파일이 잠겨있는 이유에 대한 아이디어와이를 방지하는 방법은 무엇입니까?

이 내가 (순서대로) 읽기 전용 문서를 엽니 다 받아들이 후받는 대화 상자입니다

Reult Dialog1 Dialog2 Dialog3 Dialog4 Dialog5 Dialog6 Dialog7

선택한 후 방법 위의 필드를 바꿉니다 :

Merge Errors

원본 메일 병합 필드 : 개인 선택 후

enter image description here

: '!'

enter image description here

를 내가 말씀 응용 프로그램이 사용하는 말할까요 어떻게 문자를 필드 구분 기호로 C# 코드에서?

또한 대화 상자를 어떻게 진행합니까? 편지 병합 필드로 나열된 필드가 포함되지 않은 데이터 소스로 인해 각각 하나씩 수신한다고 가정합니다.

-fuldate -sys -memno -name -address1 -address2 -address3 -sal

그리고 여기 내 구분 된 필드입니다 : 여기

내 편지 병합 필드입니다 내 .txt 데이터 소스 파일에서 :

memno! 이름! addr1! addr2! city! state! zip! o ld_addr1! old_addr2! old_city! old_state!old_zip

당신은 TrueOpenAndRepair 모드를 설정 한 다음 문서를 열 수 있습니다
+0

을 당신이 사용하는 사무실? –

+0

2010. EDIT를 검토하고 싶다면 초기 문제가 해결되었습니다. –

답변

0

이 교체 :

oWrdDoc = oWord.Documents.Open(oTemplatePath); 

다음으로 : MS-의 어떤 버전

oWrdDoc = word.Documents.Open(oTemplatePath, OpenAndRepair: true); 
+0

인스턴스가 보이지 않았 음을 알았 기 때문에 어떤 이유로 문서가 잠겨 있기 때문에 읽기 전용 복사본을 열 것인지 묻는 대화 상자가 표시되지 않았습니다. 추가 정보는 편집을 참조하십시오. –

+0

오, 위대한 당신은 스스로 해결 :) 해피 코딩 :) –

+0

글쎄, 그 문제를 해결하지만, 만약 당신이 내 편집을보고 성가신 대화를 많이 가지고있어 :) 어떻게 C#에서 코드를 사용하여 그것을 말할 수 있습니까 나의 '!' 문자를 필드 구분 기호로 사용 하시겠습니까? –