2015-02-03 4 views
1

매우 간단한 단어 문서를 만들려면 Word2010 장치를 사용하고 있습니다.WordDocument.SaveAs가 빈 문서가됩니다.

이 코드를 작성했는데 모든 것이 정상적으로 보입니다. 그러나 실제로는 저장된 문서는 항상 비어 있습니다. 왜 이런 일이 일어나고 있는지 알고 계시나요?

여기 내 코드입니다 : SaveAs로 매개 변수의

procedure TConverter.Convert; 
var 
    A: TWordApplication; 
    W: WordDocument; 
begin 
    A := TWordApplication.Create(Nil); 
    try 
    // Create document 
    A.Visible := False; 
    W := A.Documents.Add('', False, wdNewBlankDocument, True); 

    // Write in document 
    A.Selection.StartOf(wdStory, wdMove); 
    A.Selection.InsertAfter('Hello World!'); 
    A.Selection.Collapse(wdCollapseEnd); 
    A.Selection.EndOf(wdStory, wdMove); 

    // Save document 
    W.SaveAs(Target, wdFormatDocument, False, '', False, '', False, False, False, True, False, msoEncodingUTF8, True, 
     False, wdCRLF, False); 
    W.Close(wdDoNotSaveChanges, wdWordDocument, False); 
    A.Quit; 
    finally 
    A.Free; 
    end; 
end; 
+0

'wdDoNotSaveChanges'? –

+0

예, 처음에는'SaveAs'를 사용하여 사용자 정의 방식으로 저장 한 다음, 이미 저장했기 때문에 변경 사항을 저장하지 않고 닫습니다. – Javid

+0

'W.SaveAs (Target); 그냥 해봤 니? ' 다른 매개 변수의 기본값을 변경할 필요가 없다면, 이것은 나를위한 속임수입니다. – adlabac

답변

1

한 것은 올바르지 않습니다. 어떤 것을 아직 확인하지는 않았지만이를 처리하는 가장 좋은 방법은 기본 동작을 요청하는 것입니다. EmptyParam를 전달하여 그 수행

W.SaveAs(Target, wdFormatDocument, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, 
    EmptyParam, EmptyParam, EmptyParam); 

예쁜 추한 그렇지?!

다른 한편으로는, 나는 이것이 당신이 5를 넘어 세도록 강요하는 질문의 코드보다 더 읽기 쉽다고 주장 할 것입니다. 그것은 한 손에는 손가락 수를 넘어 서기 때문입니다. 어느 쪽이 항상 까다 롭습니다!

좋아, 매개 변수 번호 10, SaveFormsData 인 것처럼 보입니다. 당신은 True를 전달했습니다. False으로 변경하면 문서의 내용이 저장된 파일에 표시됩니다. 그러나, 나는 위에서 말한 것에 의지한다. 여기서는 처음 두 매개 변수 만 신경 써야하므로 다른 모든 매개 변수에는 EmptyParam을 사용하고 이러한 매개 변수의 기본값을 요청합니다.

+0

고맙습니다;) 너무 추한 그러나! – Javid

+1

이것은 꽤 흥미로운 문제입니다. 못생긴 것을 숨기려면 클래스 도우미를 사용할 수 있습니다. 후기 바인딩 된 COM을 사용했다면 매개 변수를 생략 할 수 있습니다. 그러나 나는 후기 바인딩 된 COM에는 그 이득을 능가하는 다른 단점이 있다고 주장합니다. 균형을 유지하기 위해, 나는 여전히 추악한'EmptyParam'을 명시 적으로 지정한 매개 변수보다 더 선호합니다. 그것들은 단지 추악하고 확인하고 확인하기가 훨씬 더 어렵습니다. –