クリップボードへのデータ転送するには?

解決


仔猫  2008-06-03 12:04:41  No: 30877  IP: 192.*.*.*

Delphi2007 WindowsXP です。

BMP:  TBitmap;
TXT:  String;

これを同時にクリップボードにデータを転送して、
Excel に取り込むにはどうすればよいのでしょうか?


ClipBoard.Assign(BMP);
ClipBoard.SetTextBuf(PChar(Text));
テキストしかうけとれません。

編集 削除
仔猫  2008-06-03 12:19:17  No: 30878  IP: 192.*.*.*

すみません。
もうひとつお願いします。

BMP1:  TBitmap;
BMP2:  TBitmap;

2つの画像をクリップボードに転送して
Excelで2つの画像を受け取る方法も教えてください。

編集 削除
ttt  2008-06-03 12:53:51  No: 30879  IP: 192.*.*.*

Open
形式1のデータをセット
形式2のデータをセット
Close

という具合にはさんでやれば複数形式のデータをセットできます。
ただ注意してほしいのは、これで実現できるのはあくまで
それぞれのデータが別々にクリップボードに入っていて、
どれか一つを選んで取り出せる状態だということ。
(Excelだと「形式を選択して貼り付け」ですね)
画像とテキストがくっついているわけじゃありません。

というわけで、同じ形式(ビットマップ)を2つ入れるというのは原理的に無理です。
Excel側にもそんなの区別して貼り付ける機能はないでしょ?

編集 削除
仔猫  2008-06-03 13:21:19  No: 30880  IP: 192.*.*.*

どうも、ありがとうございます。
エクセルに画像と文字列が入ったセルをまとめてコピーして、
ワードで貼り付けすると  画像と文字列のセルがコピーされます。
もちろん画像とテキスト(罫線で囲まれていますが)として
コピーされるので、同様にしてDelphiでも出来ないかと思ったのですが
どうなのでしょうか?

編集 削除
ttt  2008-06-03 16:01:09  No: 30881  IP: 192.*.*.*

Wordの方で「形式を選択して貼り付け」してみるとわかりますが、
HTMLだとかメタファイルだとか色々な形式で格納されていますね。
ただビットマップとテキストが入っているわけではなくて、
そういう複合データを表現できる形式にして入れているわけです。

Delphiからやるとしたら、RTFかHTML形式ですかね。
文字をテキストとして扱う必要がなければメタファイルとか、
いっそまとめて1枚のビットマップにしてしまうのもありかと。
どういう形式があるか、RegisterClipboardFormatあたりを調べてみてください。

編集 削除
仔猫  2008-06-25 16:45:09  No: 30882  IP: 192.*.*.*

皆さんありがとうございました。
複数を設定しても、ワード等で一括して複数を読込むことはできないと
いう事ですよね。

編集 削除
子猫  2008-06-25 16:45:30  No: 30883  IP: 192.*.*.*

ありがとうございました。

編集 削除