2年前OLEでのプログラム間通信で任意のEXCELシートを指定したプリンターへ出力するプログラムを作成していますがうまくいきません。対象となるメソッドはEXCELの"PrintOut"メソッドだとは思うのですが、Invokeで実行する際引数のActivePrinterにプリンタ名を引き渡しているのですがエラーとなり実行されません。MFC等使わずに直接IDispatchを取得し、GetIDsOfNamesで関数を取得、Invokeで実行してます。単体でPrintOutを呼び出すと成功するのですが、これだと通常使うプリンターへ出力されてしまう為プリンターを任意に指定することが出来ません。こちらで確認できないのであてずっぽうですが。プリンター指定するとき、単に名前を指定するだけではダメとか。hr;}Invokeに関する部分はCodeProjectにある上記コードを少し修正(例外処理の追加のみです)して使っています。EXCELのPrintOutメソッドですが、以下のような引数ではないのかと想定しています。ntout.aspxセルの書式を設定したり、シートを名前を付けて保存等のメソッドは上手くいくのですが、何故かPrintOutメソッドのみエラーになります。そこでもしや引き数が異なるのではないのかと思い、OLEメソッドの関数の調べ方と引数について質問させて頂きました。現状はPrintOutメソッド呼び出し前にGetDefaultPrinterとSetDefaultPrinterのAPIを利用してとりあえずはプリンタを切り替えていますが、なんか気持ちが悪い気がしています。教えて頂いたサイトを参考に、ActivePrinterメソッド→PrintOutメソッドとしてみようと思います。#importを使用するプログラムしか作ってないので、状況が違うのですが、メソッドのパラメーターはVBAのヘルプやVCが#importするときに作ったヘッダーを参考にしています。試行錯誤でプログラミングしてます。VCをお使いならば、一度#importを使用したプログラムをコンパイルして、ヘッダーファイルだけでも作っておくといいかもしれません。PrintOutのパラメーターは全部で、9個みたいです。そのうち5番目がプリンター名です。パラメーターの省略はできないようなので、すべて指定する必要があります。サイトにあったソースに適当に追加してみたら、こちらではうまくいっているようです。2年前Bull様、返信ありがとうございます。試行錯誤していくしかないのですね・・・。OLEに関しては日本語のドキュメントがWEB上にも(自分の探し方が悪いのもありますが)殆ど無くて途方に暮れることが多いです。タイプライブラリを利用していしまうと環境依存が発生してしまう為、利用はしないルールになっています(泣。ヘッダー作成用にTLIBをimportしたプロジェクトを1つ作ってみようと思います、ありがとうございます。最後に記述頂いたソースで少し質問しても宜しいでしょうか。vtMissing);上記コードですが、1)pXlSheetは"Worksheets"オブジェクトで宜しいでしょうか?(Worksheets、sheets、sheetとEXCELはやたらにオブジェクトがありますので・・・)2)vtMissingはVariantInitにより初期化したVARIANT型変数という認識で宜しいでしょうか?よろしくお願いします。最後に記述頂いたソースで少し質問しても宜しいでしょうか。正確にはよくわかりませんが、WorksheetsではなくWorksheetだと思います。取得して使っています。-2147352572;でいいと思います。2年前Bullさんありがとうございます。原因ですが、自分が省略用の引数をVT_EMPTYと勘違いしてた事でした。指示された通りにVT_ERRORにした所うまくいきました。ありがとうございます。ミクプラは自由にリンクできます。