2012-01-11 12 views
3

Windows XPとOffice 2000でうまく動作する従来のDelphi 6(Build 6.240、Update Pack 2) - 2003年Delphi 6 OleContainer SaveAsDocumentは、Windows 7/Word 2010で破損したファイルを作成します(XP/Word 2003でOK)

当社のクライアントは、今のコードはまだ文書を正常にマージされ、そして中BLOBフィールドに保存Wordを作成しているようだ2010年

オフィスでのWindows 7上でアプリケーションを実行できるようにしたいと考えてOracleデータベースを開き、Word 2010でデータベースから文書を正常に開くことができます。

問題はアプリケーションが(PDF-XChangeを使用して)PDFバージョンの文書を作成する必要があるため、OleContainer.SaveAsDocumentを使用して、文書をディスク上の一時ファイルに書き込みます。 Word 2010(またはWord 2003)でこのドキュメントを開くと、「ファイル変換」ダイアログボックスが表示され、「ドキュメントを読み取り可能にするエンコードを選択する」と表示されます。どのオプションも、ドキュメントを読みやすくすることはできません(そして、たとえそれが自動化されたプロセスであるとしても問題は残っています)。 9、10、11及び14原因「無効なクラス文字列」エラー12または単に「Word.document」実行中に同じ有する -

OleConnectionは私はまた、他の値の代わりに8を試みたCreateObject('Word.document.8', false) を使用して確立されますつまり、保存した文書をWordで開くことはできません。

質問:Wordで再オープンできる形式で、Word 2010のWindows 7でDelphi 6のOleContainerからWord文書を保存するにはどうすればよいですか?

+0

暗闇の中でスタブ:おそらく、一時ファイルをdocx拡張子で保存していますが、現在の(doc)形式で保存していますか?その場合は、Wordにdocx拡張子を持つdoc形式のファイルを引き渡していますが、使用するxmlエンコーディングを特定できません。 –

+0

いいえ、ファイルは.doc拡張子で保存されています。 (提案していただきありがとうございます) –

答えて

0

OleContainerが.docxファイルを保存できないことがわかります。常にそれらを腐敗させる。私は問題を回避するために、コンテナのOleObject変数を使用して、Wordsプロシージャに直接アクセスできるようにしました。

OleContainer.OleObject.SaveAs(DocumentName); 

OleContainer.OleObject.Saved := True; 

私はあなたが.DOCを使用しているが、うまくいけば、これはとにかくあなたを助けることに言及したことを参照してください。以下は一例です。

関連する問題