喫茶XRAYトップページ

[スレッド全体
]

[806] ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 09:28:22 まるじ
XRAYさん、こんにちは。
初めて投稿します"まるじ"といいます。
いつも有意義なコンポーネントの紹介、素晴らしいです。
ワード操作にお詳しいと思いご相談させていただきます。

あらかじめ文章を入れたWordを開いて、ClipbrdのBitmapを
貼り付けたいのですが、うまくいきません。
元の文章が消されてしまい図だけ張り付きます。
(ワードの"元に戻すボタン"で書き込んであった文章は戻せます。)
開いた文章を消さずにBitmapを貼り付ける方法をご存知であれば
ご教授いただければ幸いです。

ただ貼り付けてるからダメなんですよね・・・。

//usesにComObj追加
------------------------------------------
  private
   WApp, Word : Variant;
  end;

const
  wdPasteBitmap = $00000004;
var
  Form1: TForm1;

implementation

{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 WApp  := CreateOleObject('Word.Application');
 Word  := WApp.Documents.Open('"C:\□□\□□\sample.doc"');
 Word  := Word.Content.PasteSpecial(,,,,wdPasteBitmap);
 WApp.Visible := True;
end;

どうぞよろしくお願いいたします。

[807] Re:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 21:10:29 Mr.XRAY
▼ まるじさん、こんにちは。

> 元の文章が消されてしまい図だけ張り付きます。
> (ワードの"元に戻すボタン"で書き込んであった文章は戻せます。)


まず、以下のことを教えて下さい。
(1) 開発Delphiのバージョン
(2) 開発Windowsのバージョンとワードのバージョン
(3) その図を貼付けた時に、ワードの文書のどの位置にどのくらい
    の大きさとなっているか。
    (例 用紙の横幅一杯とか、mmのサイズとか)
(4) その図を選択した時に、周囲のグラブ(サイズ調整用の四角形の
    色(塗りつぶしか白か)
(5) もし、その図形をマウスで移動できるなら、移動したら元の
    文章が見えるようになるのか。

それと、テストコードで気づいたこと。
(1) たとえテストでも生成したオブジェクトは破棄しておく方が
    いいでしょう。予期せぬ状態を招くことがあります。
(2) 同様に、もし、クリップボードから画像を取得できなかった場合も
    考えておく。
(3) Wordという予約語の変数は使用しない。問題が発生した場合、バグ
    取りが困難となります。

例えば以下の様に。

procedure TForm1.Button1Click(Sender: TObject);
var
     S: String;
begin
     S:='C:\AAA\Test.doc';
     WApp  := CreateOleObject('Word.Application');
     try
       AWord  := WApp.Documents.Open(S);
       AWord.Content.PasteSpecial(,,,,wdPasteBitmap);
       //ここでAWord:=AWord.Content...としてしまうと、
       //後でAWordが何を指しているか不明となってしまう。
       //必要であれば別の変数を用意する。
     except
     end;
     WApp.Visible := True;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
     //VarIsEmptyはDelphiのバージョンによっては使用不可?
     if not VarIsEmpty(WApp) then begin
       AWord :=unAssigned;
       WApp  :=unAssigned;
     end;
end;




[808] Re2:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 22:35:17 まるじ
XRAYさん、早速のご返事恐縮です。
以下、ご返事いたします。

> (1) 開発Delphiのバージョン

   D6 Personalを使用しています。

> (2) 開発Windowsのバージョンとワードのバージョン

   Win-XP HE です。

> (3) その図を貼付けた時に、ワードの文書のどの位置にどのくらい
>     の大きさとなっているか。
>     (例 用紙の横幅一杯とか、mmのサイズとか)


   左上の角(0.0だと思います)の位置に58%の大きさです。

> (4) その図を選択した時に、周囲のグラブ(サイズ調整用の四角形の
>     色(塗りつぶしか白か)

 
   何も色が付いているように見えないので白かもしれません・・。

> (5) もし、その図形をマウスで移動できるなら、移動したら元の
>     文章が見えるようになるのか。
>

   見えません。
   入れられている文字すべてが選択されて(?)貼り付けられる
   みたいで消されてしまっています。サンプルexeで図を貼り付けた
   あとに、ワードの元に戻すボタンを押すと図が消えて文字が出ます。

> それと、テストコードで気づいたこと。

   ありがとうございます。(実際に書き換えて試しました!)
   今後はご教示の内容で進めたいと思います。

ご返事が遅くなってすみません。よろしくお願いいたします。

 

[810] Re3:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 22:44:28 Mr.XRAY
▼ まるじさん
> > (5) もし、その図形をマウスで移動できるなら、移動したら元の
> >     文章が見えるようになるのか。
> >
>    見えません。
>    入れられている文字すべてが選択されて(?)貼り付けられる
>    みたいで消されてしまっています。サンプルexeで図を貼り付けた
>    あとに、ワードの元に戻すボタンを押すと図が消えて文字が出ます。


これをもう一度確認して下さい。というのは、
ワードの元に戻すというのは、動作を一つ戻すだけです。
つまり、この場合、クリップボードからの貼付けを戻すわけです。
それを戻して、文章が見えるということは、図を貼付けた後も文字は
消えていないことになります。

図はマウスで移動できるのでしょうか。もし、できなかったら、
図をクリックし、ポップアップメニュー(右クリック)で
   [図の書式]
   [レイアウト]タブをクリック
   [背面]を選択して[OK]
これで図が移動します。移動できたら、図サイズも極力小さくして
みて下さい。


[811] Re4:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 22:51:06 まるじ
> 図はマウスで移動できるのでしょうか。

  はい、図はマウスで移動できます。

[813] Re5:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 23:09:27 Mr.XRAY
▼ まるじさん
>   はい、図はマウスで移動できます。
図の現在のサイズはどのくらいですか。
極力小さくしてみて下さい。
(貼付けた後にサイズ変更をマウスで行えます)
それと、ワード2000のSPの番号は、いくつですか。
ワード2000は最低SP2をあてないと、図の貼付けにバグがあります。

[814] Re6:ワードへのbitmap貼り付け方法について返信 削除
2006/5/31 (水) 23:36:14 Mr.XRAY
それと、もう一つテスト方法。
最初のテスト用のワードの文書を、新規に文書を作成して(つまり、
空白の文書)、そこに適当に文章を数行でいいですから、作成して保存します。
この文書で試してみて下さい。

それから、そのクリップボードには、どんなアプリで[コピー]したのか
わかれば参考になると思います。


[815] Re7:ワードへのbitmap貼り付け方法について返信 削除
2006/6/1 (木) 10:19:06 まるじ
>それと、ワード2000のSPの番号は、いくつですか。

SP3です。
 
>それと、もう一つテスト方法。
>最初のテスト用のワードの文書を、新規に文書を作成して(つまり、
>空白の文書)、そこに適当に文章を数行でいいですから、作成して保存します。
>この文書で試してみて下さい。


ご指示通りの文書で試しました。結果は同じです。

>それから、そのクリップボードには、どんなアプリで[コピー]したのか
>わかれば参考になると思います。


PCのPrintScreenで画面をキャプチャーした図です。

気が付いたことですが、まったくの新規文書(当然、文字は入っていない)でも
その内容が消されます。

新規で文書を作ると「改行マークの矢印」がひとつだけ表示されています。
マウス左をクリックしながらドラックしていくと改行マークを含めて数ミリ反転します。
この状態で貼り付けを行うと、現在の文書内容のすべて削除されるようです。


[816] Re8:ワードへのbitmap貼り付け方法について返信 削除
2006/6/1 (木) 12:41:33 Mr.XRAY
▼ まるじさん
> 気が付いたことですが、まったくの新規文書(当然、文字は入っていない)でも
> その内容が消されます。


えっ?、ちょと意味がわかりません。新規で文字が入っていないというこ
とは、元々内容がないのでは?


[817] Re9:ワードへのbitmap貼り付け方法について返信 削除
2006/6/1 (木) 13:59:31 まるじ
> えっ?、ちょと意味がわかりません。新規で文字が入っていないというこ
> とは、元々内容がないのでは?


んーと、表現が悪くてすみません。あと言葉足らずで。
サンプルコードを使わずともワード文書だけで症状が再現できるので、それを
ご確認いただけますと助かります。

以下、症状の再現手順です。

@ワードで新規文書作成。
Aオートシェイプで文書下寄りに四角(なんでもいい)を壁画。
 文字でもいいんですが、文字無しで再現するため。
BPCの「PrintScreenボタン」を押し画面をキャプチャー。
 クリップボードに現在のモニター画面を記憶。
Cワード文書内の1行目全てをマウス左をクリックしながらドラックし反転。
 アウトラインモードと同様の作業。改行マークの右側まで反転していることを確認。
 (サンプルコードではこの動作がされている模様)
Dワードの「貼り付けボタン」を押す。
 図(画面のbitmap)が張り付いていることを確認。

ここまでで最初に壁画した四角が消されていることがわかると思います。
サンプルコードでは文書を開いた際に最終文字の改行マークまで全て選択して
貼り付けているようで、これがテンプレートとしたい文書の中身を消すことに
なってしまっている、と思うのですが。



[818] Re10:ワードへのbitmap貼り付け方法について返信 削除
2006/6/1 (木) 16:16:40 Mr.XRAY
▼ まるじさん
> Cワード文書内の1行目全てをマウス左をクリックしながらドラックし反転。
>  アウトラインモードと同様の作業。改行マークの右側まで反転していることを確認。


ということは、新規作成したワードに何か文章は入力するということですか?
アウトラインモード? と同じ?
どうも、まるじさんと私は、用語の解釈が違うようですね。

>サンプルコードを使わずともワード文書だけで症状が再現できるので、それを
>ご確認いただけますと助かります。


私の環境ではまるじさんの様に文字は消えません。
もちろん最初のテストコードでも...


注意 ネットでは○の中に数字の文字は使用禁止です。
http://mrxray.on.coocan.jp/Links.htm#Mail




[819] Re11:ワードへのbitmap貼り付け方法について返信 削除
2006/6/1 (木) 18:10:11 まるじ
▼ Mr.XRAYさん
> ということは、新規作成したワードに何か文章は入力するということですか?
 
 文章は入力しません。
 文字先頭より改行マークの右側まで反転させて選択する作業後に
 図を貼り付けます。
 
> アウトラインモード? と同じ?
> どうも、まるじさんと私は、用語の解釈が違うようですね。


  またまた言葉足らずで申し訳ありません。
 アウトラインモードで文字列を選択するとき、左にある四角のマスを押すと
 全ての文字を選ぶことができますが、これと同じですいう意味で「アウトライン
 モードと同様の作業」と単純に書いてしまいました。
 余計なコメントでした。
 
> 私の環境ではまるじさんの様に文字は消えません。
> もちろん最初のテストコードでも...


 同じコードを使って結果が異なるのであれば、ワード側の設定に違いが
 あるのかもしれません。設定を変えて試してみます。

> 注意 ネットでは○の中に数字の文字は使用禁止です。
> http://mrxray.on.coocan.jp/Links.htm#Mail


申し訳ありません。以後注意いたします。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.82