3

ユーザー基準に基づいて AS400 データをクエリし、結果を ListView コントロールに返す単純な C# Winforms アプリケーションを作成しました。Button_Click() で、ヘッダーとデータを .txt ファイルに保存します。以下では、その .txt ファイルを差し込み印刷の Word ドキュメントのデータソースとして使用しようとしています。

コードが到達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
            {
                //
            }
        }

編集: 新しい Word インスタンスが設定されていなかったことが判明したVisible = trueため、インスタンスがファイルが編集のためにロックされているというダイアログを表示したとき (自分で??? )、以前は読み取り専用バージョンを開くように求めていました。見ることができず、処理中にすべてがフリーズしたように見えました。上記のコードを変更して、変更を反映させました。

自分のファイルからロックアウトされる理由と、これを防ぐ方法についてのアイデアはありますか?

これらは、読み取り専用ドキュメントを開くことを受け入れた後に受け取るダイアログです (順番に):

結果 ダイアログ1 ダイアログ2 ダイアログ3 ダイアログ4 ダイアログ5 ダイアログ6 ダイアログ7

上記のフィールドを置き換える方法を選択した後:

マージ エラー

元の差し込み印刷フィールド:

ここに画像の説明を入力

パーソナルセレクション後:

ここに画像の説明を入力

Word アプリケーションに「!」を使用するように指示するにはどうすればよいですか? 私のC#コードのフィールド区切り文字としての文字?

また、ダイアログを続行するにはどうすればよいですか? 差し込み印刷フィールドとしてリストされているものと一致するフィールドがデータソースに含まれていないため、それぞれを受け取ると思いますか?

ここに私の差し込み印刷フィールドがあります:

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

そして、これが私の .txt DataSource ファイルからの区切りフィールドです。

memno!name!addr1!addr2!city!state!zip!old_addr1!old_addr2!old_city!old_state!old_zip

4

1 に答える 1