- ベストアンサー
フォームとMSFlexグリッドのハードコピー方法
- フォームとそのフォーム上にあるMSFlexグリッドのハードコピーを、コマンドボタンのクリック一発で行える方法を教えてください。
- PrintFormメソッドを使ってフォームとMSFlexグリッドの内容を印刷しようとしていますが、MSFlexグリッドの部分が真っ黒に印刷されてしまいます。
- 解決方法をご存知の方は、ぜひ教えてください。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どもども田吾作7です。 どうやらOCXのコントロール類はPrintFormの対象になってくれないようですね。 実験して初めて知りました。(-ロ-;グハッ ですので、フォームのデバイスコンテキストを使用したら、うまくいったみたいなので、ご報告いたします。 With Me 'フォームのスケールモードをピクセルにします。 .ScaleMode = vbPixels 'Printerオブジェクトのスケールをピクセルにします。 Printer.ScaleMode = vbPixels 'Printerオブジェクトの出力を促します。 Printer.Print 'Printerオブジェクトへフォームを描画します。 Call StretchBlt(Printer.hdc, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, .hdc, 0, 0, .ScaleWidth, .ScaleHeight, vbSrcCopy) 'Printer オブジェクトに送っているドキュメントを終了し、印刷デバイスやスプーラに出力処理の制御を渡します。 Printer.EndDoc End With ってな感じでしょうか? あらかじめフォームをピクセルにしておいたら一行省略できると思います。 StretchBltで、Printオブジェクトのサイズに、フォームを描画しているので、あらかじめPrinterオブジェクトのWidth/Heightを設定してあげると、間延びした印刷にはならないと思います。 でわでわ
その他の回答 (1)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
再度、田吾作7です。 返事が無いところを見ると、解決したのかな? それともわからなくて困ってるのかな? もしそうだとしたら、遠慮なく質問してくださいね。
お礼
お礼が大変に遅れてしまいました。 本当に助かりました。どうもありがとうございます。 客先に10日以上も詰めて、火を噴いたプロジェクトの 納品作業をやっており、まったく時間がありませんでした。 おかげさまで今日の夜には帰れそうです。 どうもありがとうございました。 また、なにかあった時にはよろしく御教授ください。