Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
クリップボードの画像データを指定場所、指定サイズにコピーしたい
投稿日時: 19/09/03 14:28:58
投稿者: Fox0115

業務改善として処理をマクロ化しています。
ClickStamperでクリップボードに作った印を書類の指定位置、指定サイズで作成したいのですが、
クリップボードからの作成例がなく困っています。
 
ファイルからの作成は社内権限の規制で難しいためできません。
どなたかわかる方教えていただけると幸いです
 

回答
投稿日時: 19/09/03 18:08:53
投稿者: simple

それはフリーソフトですね?
回答者が皆さんそれを使っているわけではないので、説明が必要でしたね。
 
Excelからそのソフトをコントロールする手段は、そのソフト側から提供されていないので、
Application.Sendkeysを使って、Ctrl+Vを送るしか手はないと思います。
(なお、ご承知のとおり、この手段はタイミングに依存するので、
  必ず成功することが保証されません。)
 
以下、考え方を書きますので、そちらでトライして下さい。
 
・Sendkeysの部分は

    Call Application.SendKeys("^{v}", True)
    DoEvents
    DoEvents
    DoEvents
    DoEvents
こんな感じ。(Doeventsをいくつか入れるのは、待ち時間を入れるため。成功し易い)
・その直後に、
   Set pic = Selection
で画像のオブジェクトを変数に保持。
・貼付先のセル範囲をユーザーに指定させる
  Set target = Application.InputBox(prompt:="Sample", Type:=8)

・そのセル範囲に合わせて画像を調節する部分は、下記のサイトを参考にして下さい。
 この質問掲示板にある「即効テクニック」のコーナーの記事です。 
  https://www.moug.net/tech/exvba/0120027.html
 
参考までにお聞きしますが、
>ファイルからの作成は社内権限の規制で難しいためできません。
と、それがオンラインソフトであることが辻褄が合うんでしょうか。
emfファイルか何かにして、直接読み込ませた方が自然だと思います。
どんな考え方で規制しているのでしょうか。(難しければ結構。回答はマストではないです。)

回答
投稿日時: 19/09/03 18:36:05
投稿者: simple

前後の流れが不明なので、なんとも言えませんが、
InputBoxがわざとらしいというなら、
マクロの前に対象セルを選択しておいて、
それを set rng = Selection で覚えさせてから、
Ctrl+Vを実行させる(SendKeysで)という順序もあるでしょう。
 
いずれにしても、材料は提供しましたので、色々とトライしてみてください。
もっと気の利いたものができるかもしれません。

投稿日時: 19/09/12 09:50:45
投稿者: Fox0115

こちらの意図をうまく伝えられなくて申し訳ありませんでした。
 
何らかの方法でクリップボードに画像データを入れる
そしてここからVBAで画像データを指定位置と指定サイズにしてエクセルシートに貼り付けたい
ということでした。
 
綺麗なソースではないので、動作だけ連絡させていただきます。
 
クリップボードから貼り付けを行う

指定の名前の画像があれば消す

貼り付け画像に名前をつける

指定の名前の画像の位置と拡大率を変更
 
という運びになりました。
 
一人一人にコメントをかけなくて申し訳ありませんでした。
みなさまのアドバイスとてもためになりました。ありがとうございました。

投稿日時: 19/09/12 09:52:55
投稿者: Fox0115

解決済にいたしました