|
■No45290 (初心者です さん) に返信
> new object[]{oFilePath,
> oMissing, oMissing, oMissing, oMissing, oMissing,
> oMissing, oMissing, oMissing, oMissing, oMissing,
> oMissing, oMissing, oMissing, oMissing, oMissing});
oMissing とは、System.Type.Missing の事でしょうか?
だとすれば、optional パラメータは省略可能ですので、
上記は new object[]{oFilePath} でも動作します。
それと、VB のアセンブリを使う事に抵抗が無ければ、
> oWord = docApp.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, docApp, null);
> oDoc = oWord.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, null, oWord, new object[]{oFilePath, …});
というコードは、Microsoft.VisualBasic.DLL を参照設定すると、
using Microsoft.VisualBasic;
using VB = Microsoft.VisualBasic.Interaction;
としておいた上で、
oWord = VB.CallByName(docApp, "Documents", CallType.Get);
oDoc = VB.CallByName(oWord, "Open", CallType.Method, oFilePath);
のように、比較的短く記述することができますよ。
> のような感じ行いたいのですが印刷ができません。
それはエラーになるという事ですか?
だとしたら、その例外(あるいは例外の InnerException)は何になっていますか?
> oDocPrint = oWord.GetType().InvokeMember("PrintOut", BindingFlags.GetProperty, null, oWord,
> new object[] {
> oTrue, oFalse, range, oMissing, oMissing, oMissing,
> items, copies, pages, pageType, oFalse, oTrue,
> oMissing, oFalse, oMissing, oMissing, oMissing, oMissing
> });
やりたい事は、「oDoc」に読み込まれた文書を印刷することですよね?
しかし、oWord は Documents オブジェクトです。上記の構文で呼び出されるのは、
『Documents オブジェクトの PrintOut プロパティ』となる事に注意してください。
Documents には、PrintOut というプロパティもメソッドもありませんので、
当然、呼び出すことはできません。
ここで呼び出すべきは、『Document オブジェクトの PrintOut メソッド』です。
# あるいは、Document.PrintOut の代わりに、Application.PrintOut でも役目は果たせますが、
# oDoc を印刷するという視点から見ると、Document.PrintOut の方が自然でしょうね。
なお、Word 2007 の場合、
Application.PrintOut メソッド…引数 19個
Document.PrintOut メソッド…引数 18個
という定義になっています。引数の数が違いますのでご注意あれ。
(もっとも optional 引数なので、引数指定は省略することもできますが)
|