VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/02/07(Fri) 15:14
投稿者k.k
Eメールgtk2k@hotmail.com
URL
タイトルRe: word文書をCopyAsPictureで

> Clipboard.GetData(vbCFMtafaile)
うち間違得たのかな?
拡張メタファイルの場合はvbCFEMetafileですよね。
これだとメタファイルになってしまう。
私は、メタファイルの表示方法をloadpictureでしか知らないので、
プログラム上でのアドバイスはできませんが、ひとつ
別の方法でなら何とかなるかと思います。
コントロールパネルで、「プリンタ」を起動し、印刷を行うプリンタを右クリックして
プロパティを選択します。
プロパティウィンドウが表示されたら、詳細設定タブの
”印刷ドキュメントを巣プールし、プログラムの印刷処理を高速に行う。”

”全ページ分のデータを巣プールしてから、印刷データをプリンタに送る。”
にチェックを入れます。
そして、「プリントプロセッサ」ボタンを押すとウィンドウが表示されるので、
そのウィンドウの中の「規定のデータ型」の中から"NT EMF x.xx"
を選択してください。
これはウィンドウズ2000での話です。98などはプロパティウィンドウの形式が
違いますのでちょっと違いますが、データ型を設定するところはありますので、
見つけてください。
あと、プリンタをオフラインに設定します。しかし、これはネットワーク上の
プリンタの場合だけで、プリンタがパソコンに接続されている場合はこの設定項目
がありません。しかし、API関数を使用してこの設定を行うと、パソコンと直接
つながっているプリンタであってもオフラインに設定できます。
オフラインに設定することにより、プリンタにデータを送信してしまうのを防ぎます。
これで、後は印刷を行うだけでEMFファイルはできます。
EMFファイルができる場所ですが、
WinNT\System32\spool\printers
(98系ではこれに該当するフォルダ)
だったと思います。
ファイル名は機械的に作成されたもので、拡張子が確か.tmpだったと思います。
印刷を行ったら、このフォルダにできたファイルを調べればいいでしょう。
ページごとに出力されますのでとりあえずは問題はクリアします。
しかし、ジョブは残ったままになりますので、手動で消すなり、API関数を駆使して
自動で消すなりしてください。
とまあ、あいまいな形で申し訳ございません。
私も、2年前にこのようなツールを作成していました。
ファイルをドラッグアンドドロップし、変換ボタンを押したらビットマップに変換されるというものです。
ビットマップに変換といってますが、出力されたEMFファイルを変換したものです。

いかんせんソースがもう手元にないのでこのようなあいまいな形となってしまいました。
すいません。

あと、プリンタによってはデータ形式が"RAW"のみの場合もあり、EMF出力ができないものもあります。それと、"WMF"というのもあり、これは単なるメタファイルで、API関数を使用して
拡張メタファイルに変換することができます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -