次のコードでC#相互運用機能アセンブリを使用してMicrosoftWordのフォームフィールドに入力しようとしました
string filename = @"N:\mehler\Vorlage2.dotx";
Microsoft.Office.Interop.Word.Application Word = new Microsoft.Office.Interop.Word.Application();
Microsoft.Office.Interop.Word.Document doc = new Microsoft.Office.Interop.Word.Document();
doc = Word.Documents.Open(filename);
doc.Activate();
foreach (Microsoft.Office.Interop.Word.FormField field in doc.FormFields)
{
switch (field.Name)
{
case "Text2":
field.Range.Text = "1";
break;
default:
break;
}
}
doc.SaveAs2(@"N:\mehler\Ausgefuellt.docx");
doc.Close();
Word.Quit();
System.Diagnostics.Process.Start(@"N:\mehler\Ausgefuellt.docx");
Microsoft WordはファイルAusgefuellt.docxを開くことができず、不明なエラーが発生したことを示すメッセージを表示します。
少しのフォーマットされていないテキストと2つのText-Form-Fieldsを使用して単純なWordドキュメントを作成しました
誰かが私に、何がうまくいかなかったのか、またはiaのソースコードにエラーがあるのか教えてもらえますか?
編集:私はなんとか問題を特定することができました。 1つのテキストフォームフィールドのみを含むドキュメントを作成しました。 Word 2013では、これはトピック「Formulare aus Vorversionen」の下にあります(これを「以前のバージョンのフォームフィールド」に翻訳します)ドキュメントを開いて保存するだけになるようにforeachブロック全体をコメントアウトすると、同じようになります結果。
ソースファイルをWordで直接開いても問題ありません。また、ドキュメントを読み込んでWordを表示しようとしました。結果は、ドキュメントがロードされていない空のWordインスタンスのように見えました。
次を使用する必要があります。
doc = Word.Documents.Add(filename);
の代わりに:
doc = Word.Documents.Open(filename);
そのため、Wordはテンプレートを使用してドキュメントファイルを作成し、テンプレート自体は開きません。アクティブなドキュメントがテンプレートの場合、Wordの動作が異なるようです。
それを使用してください、それはうまくいくはずです:
Word.Application WordApp;
Word.Document WordDoc;
object misValue = System.Reflection.Missing.Value;
WordApp = new Word.ApplicationClass();
WordDoc = WordApp.Documents.Open(filePath2, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
WordDoc.Activate();