Word 文書のディレクトリをプログラムで印刷しようとすると問題が発生します。この例では、「3_」プレフィックスを持つファイルのみを印刷しようとしています。問題は、接頭辞が 3_ のファイルが 2 つないとファイルが印刷されないことです。私はこの問題を解決するために永遠に見回してきました。ファイルを開く方法に何か問題がありますか? ディレクトリに 2 つのファイルがある場合にのみ機能します。この場合、2 つのファイルのうちの 1 つだけが出力されます。
編集:メッセージボックスを試してみましたが、パスは正しいです。ファイル名は正しいです。また、プリンター フォルダー内のプリンターを見ていると、ドキュメントが一瞬点滅してから消えます (出力を確認できるように印刷を一時停止しています)。Word でエラーが表示される場合、表示されないのはなぜですか? ディレクトリに 3_ プレフィックスを持つ 2 つのファイルがある場合、なぜこれが機能するのでしょうか?
編集: printout() メソッドの問題だと思います。アプリを可視に設定して実行すると、ドキュメントは正常に開きますが、何も印刷されません。ドキュメントを手動で開いて印刷できます (正常に動作します)。
編集:回答ありがとうございました。printout() メソッドの background パラメータが問題でした。印刷が完全にスプールされる前にプログラムが終了します (これが、印刷キューでドキュメントが点滅して消えるのを見る理由です。バックグラウンド印刷をオフにするには、ドキュメントを開いたままにして印刷する必要がありました。これが重要でした。ありがとうございました
string[] filesToCheck = Directory.GetFiles(clientDirectoryPath);
Object filename = null;
for (int i = 0; i < filesToCheck.Count();i++ )
{
if(filesToCheck[i].Contains("3_"))
{
filename = filesToCheck[i];
wrdDoc = wrdApp.Documents.Open(ref filename, ref oMissing, ref oTrue, ref oFalse,
ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing);
wrdDoc.PageSetup.FirstPageTray = letterHeadTray;
wrdDoc.PageSetup.OtherPagesTray = defaultTray;
wrdDoc.PrintOut(ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing);
wrdDoc.Close(ref oFalse, ref oMissing, ref oMissing);
wrdDoc = null;
}
}