none
PictureBoxの画像をWordのImageコントロールに RRS feed

  • 質問

  • お世話になります。

    件名の通りPictureBoxの画像をWordのImageコントロールにいれたいのですが、やり方がわかりません。

     そもそもこれは可能なんでしょうか?

    2006年12月30日 8:17

すべての返信

  • tutumi さん、こんにちは。

     tutumi さんからの引用
    件名の通りPictureBoxの画像をWordのImageコントロールにいれたいのですが、やり方がわかりません。
    そもそもこれは可能なんでしょうか?

    究極的には、外部ファイルとして画像を出力して、そこから読み込ませれば良いわけですから可能でしょう。

    2006年12月30日 10:13
  • 木田さん、こんにちは。

     木田 さんからの引用
    参考まで↓

    http://dobon.net/vb/dotnet/graphics/pictureboxdragdrop.html 

    この方法ではできないと思います。

    2007年1月5日 3:32
  • じゃんぬねっとさん、木田さん、お返事ありがとうございます

    そして、あけましておめでとうございます

     じゃんぬねっと さんからの引用

    tutumi さん、こんにちは。

     tutumi さんからの引用
    件名の通りPictureBoxの画像をWordのImageコントロールにいれたいのですが、やり方がわかりません。
    そもそもこれは可能なんでしょうか?

    究極的には、外部ファイルとして画像を出力して、そこから読み込ませれば良いわけですから可能でしょう。

    これは

    • pictureboxの画像を吐き出す
    • 吐き出した画像をimageコントロールに読み込む

    ということですよね

    imageコントロールに画像を表示する場合パスを指定しなければいけませんが、このやり方だとパスを指定できないと思うのですが。

    出来るなら詳しく教えてください。

     

    というかすいません、やりたいことを具体的に書いていませんでした。

    • vbのpicureboxをクリック
    • 画像を選択する
    • wordのimageコントロールにpicureboxの画像を反映

    といった処理をしたいんです。

    picureboxの画像をwordのシートに入れるのはできたんですが、imageコントロールにいれるやり方が分かりません。

    これは可能でしょうか?

    2007年1月9日 3:08
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    imageコントロールに画像を表示する場合パスを指定しなければいけませんが、このやり方だとパスを指定できないと思うのですが。

    保存したパスを渡すだけで良いのではないでしょうか?
    そういう意味では、Word 側の処理は、VBA マクロでやった方が良いですね。

    パスは引数として渡すことができます。

    picureboxの画像をwordのシートに入れるのはできたんですが、imageコントロールにいれるやり方が分かりません。
    これは可能でしょうか?

    Image コントロールとは何ですか?
    Word には Shape という考えしかなかったと思いますが...

    ついでにいうと、Word のシートというのも良くわかりません。
    Excel にはシートという概念がありますが、Word にはそういった概念はありません。
    普通に考えて、「Word ドキュメント自体」 という意味でしょうか。

    2007年1月9日 4:22
  • 素早いお返事ありがとうございます。

     じゃんぬねっと さんからの引用

     tutumi さんからの引用
    imageコントロールに画像を表示する場合パスを指定しなければいけませんが、このやり方だとパスを指定できないと思うのですが。

    保存したパスを渡すだけで良いのではないでしょうか?
    そういう意味では、Word 側の処理は、VBA マクロでやった方が良いですね。

    パスは引数として渡すことができます。

    パスを引数として渡すことが出来たんですね。

    ありがとうございます、調べてみます。

    Image コントロールとは何ですか?
    Word には Shape という考えしかなかったと思いますが...

    コントロールツールボックスのimageというのがあったので、imageコントロールと呼んでいました。

    ついでにいうと、Word のシートというのも良くわかりません。


    Excel にはシートという概念がありますが、Word にはそういった概念はありません。
    普通に考えて、「Word ドキュメント自体」 という意味でしょうか。

    wordのシートは「Word ドキュメント自体」というので合ってます。

    分かりづらくてすいません。

    2007年1月9日 4:58
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    パスを引数として渡すことが出来たんですね。
    ありがとうございます、調べてみます。

    わからないところがありましたら、また聞いてください。

    コントロールツールボックスのimageというのがあったので、imageコントロールと呼んでいました。

    ああ、ツール ボックスの方を使われているのですか。
    個人的には、画像を表示したいだけならば、シェイプの方が良いと思いますよ。

    VBA のフォームがあるなら、話は別ですが。

    2007年1月9日 5:22
  •  じゃんぬねっと さんからの引用

    わからないところがありましたら、また聞いてください。

    ありがとうございます。

    そのときはまた質問させてもらいます。

    ああ、ツール ボックスの方を使われているのですか。
    個人的には、画像を表示したいだけならば、シェイプの方が良いと思いますよ。

    VBA のフォームがあるなら、話は別ですが。

    シェイプだと位置を指定できないので、ツールボックスの方を使おうと思っています。

    2007年1月9日 5:29
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    シェイプだと位置を指定できないので、ツールボックスの方を使おうと思っています。

    シェイプでも位置は指定できますし、メンバとして所有していますよ?
    InlineShape だとダメですが、配置方法を変えれば自由に動かせます。

    GDNJ 掲示板 - Re: 承認/確認の 印鑑 (microsoft.com)

    ご参考になれば幸いです。

    2007年1月9日 6:54
  •  じゃんぬねっと さんからの引用

    シェイプでも位置は指定できますし、メンバとして所有していますよ?
    InlineShape だとダメですが、配置方法を変えれば自由に動かせます。

    シェイプでも位置指定できるんですね。

    調べが足りませんでした。

    シェイプじゃなくimageコントロールでやりたいもう一つの理由は

    • vbのpicureboxをクリック
    • 画像を選択する
    • wordimageコントロールにpicureboxの画像を反映

    という処理をするので、元からある画像から画像が変わる場合があるので、その場合シェイプだと一回消して追加しなおさなければいけないと思うのですが、

    imageコントロールだとpictureプロパティを変更すればいいだけなので処理が簡単という理由があります。

    ただ、imageコントロールに画像を入れる方法が未だに分かっていないのでシェイプでやろうかなって考えが出てきました。

    保存したパスを渡すだけで良いのではないでしょうか?
    そういう意味では、Word 側の処理は、VBA マクロでやった方が良いですね。

    パスは引数として渡すことができます。

    wordへの引数の投げ方について自分なりに調べてみたんですが、

    • vbから画像のパスをwordのラベルやらテキストボックスやらに引数を書き込む
    • word側から読み込む

    という方法しか分からなかったのですが、これしか方法はないのでしょうか?

     

    2007年1月10日 9:20
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    シェイプじゃなくimageコントロールでやりたいもう一つの理由は

    • vbのpicureboxをクリック
    • 画像を選択する
    • wordのimageコントロールにpicureboxの画像を反映

    という処理をするので、元からある画像から画像が変わる場合があるので、その場合シェイプだと一回消して追加しなおさなければいけないと思うのですが、imageコントロールだとpictureプロパティを変更すればいいだけなので処理が簡単という理由があります。

    まず、処理コストはさほど変わりません。
    ただ、"実装が簡単" という意味であれば、実は誤りです。(詳しくは後述)

    ただ、imageコントロールに画像を入れる方法が未だに分かっていないのでシェイプでやろうかなって考えが出てきました。

    Image コントロールを扱う場合は、VBA の MSForms.Image クラス モジュールになります。
    このインスタンスを取得するには、VBA からであれば一発で取得できます。

    ただ、Picture プロパティが StdPicture 型だったように思えます。
    このあたりは、OLE オートメーションをある程度知っていないとハマります。

    wordへの引数の投げ方について自分なりに調べてみたんですが、

    • vbから画像のパスをwordのラベルやらテキストボックスやらに引数を書き込む
    • word側から読み込む

    という方法しか分からなかったのですが、これしか方法はないのでしょうか?

    いいえ、VBA 側の関数に直接渡すことができるメソッドがあります。
    詳しくは、こちらの私の発言を参考にしてください。

    検索結果を EXCEL でグラフ表示したい (atmarkit.co.jp)

    Excel.Application インターフェイスの Run メソッドで VBA 側の関数を呼び出すことができます。
    この Run メソッドで、引数をいくつか渡すことができますので、この仕組みを利用します。

    また、わからないところがありましたら、どうぞ。

    2007年1月10日 10:33
  • 返事が遅れてしまってすいません。

    .netからvbaに引数を投げることが出来ました。

    ありがとうございます。

    また質問で申し訳ないのですが、wordから.netに引数を投げることは可能でしょうか?

    2007年1月25日 8:43
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    .netからvbaに引数を投げることが出来ました。

    解決できたようで、私も嬉しいです。

    また質問で申し訳ないのですが、wordから.netに引数を投げることは可能でしょうか?

    Run メソッドの戻り値で返すという方法が考えられます。

    2007年1月26日 1:06
  • お返事ありがとうございます。

     じゃんぬねっと さんからの引用

    Run メソッドの戻り値で返すという方法が考えられます。

    msdnライブラリでrunメソッドを調べたところ、

    「Runメソッドは、呼び出したマクロが取得する値をそのまま取得します。」

    と書いてあり、関数に渡した値にマクロで値を入れるとvbに戻ったときに値が取得するのかと思いやってみたのですが、結果はnullでした。

    どうやれば呼び出したマクロが取得する値を取ってくることができるのでしょうか?

    2007年2月1日 10:11
  • tutumi さん、こんにちは。

     tutumi さんからの引用
    「Runメソッドは、呼び出したマクロが取得する値をそのまま取得します。」
    と書いてあり、関数に渡した値にマクロで値を入れるとvbに戻ったときに値が取得するのかと思いやってみたのですが、結果はnullでした。
    どうやれば呼び出したマクロが取得する値を取ってくることができるのでしょうか?

    ちょっと、MSDN ライブラリの説明が良くないみたいですね。
    Run メソッドで呼び出した関数 (メソッド) の戻り値を返すことで取得が可能になるハズです。

    2007年2月2日 10:23