ひとつとってはSEのため
ふたつとっては客のため
みっつとっては・・・誰のため?
さぁテストだ、となると、
ブラウザで画面表示 → PrintScreen → Excelに貼り付け
を延々と繰り返して、テストのエビデンスをとるわけですよ。
まあ非生産的なこと、誰の役に立つのでしょう、しかも表計算のExcelがお絵かき帳だなんて、と思っても口には出さないわけですが、
仕事で作んなくちゃいけない、と決まっているので作るわけです。
にしても、もう少しましにならないか・・・。
たとえば、PrintScreenを押すと、勝手にExcelに貼りつけてくれる、とか。
と思って、「VBA クリップボード 監視」で検索してみると・・・
やっぱり先人はいるのですね、たとえばここ。
(興味を持たれた方は、(1)~(4)まであるので、全部読むことをお勧めします)
あとはこの仕組みに、ワークシートへの図のペーストを入れればオシマイ!なのですが、
ついでにちょっと気になるところがあったので、そこをちょっといじってみたりしました。
こんな感じです。適当なExcelブックを作成して、標準モジュールのModule1に書きます。
これは、64bit版のWindows 7でExcel 2010を使ったのでこういう書き方になったのですが、そうでなければ、たとえばExcel 2003とかなら、
LongPtr → Long
上のほうでDeclare FunctionしているところのPtrSafeを削除
とすればOKです。というか、別に2010でも同じようにやっても多分動くと思います。LongPtr使ってみたかっただけ。
そして、ユーザフォームを作成します。フォームにはチェックボックスをひとつだけ。
こんな感じです。
コードはこうします。ユーザフォームの名前は"UserForm1"、チェックボックスの名前は"CheckBox1"にします。また、ユーザフォームはモードレス、つまり、ShowModalをFalseにしておきます。
さて、説明は後回しにして、先に使い方を言いますと、
1. ユーザフォームを実行するなりして、 ユーザフォームを表示します。
2. フォームの中のチェックボックスをクリックします。
3. PrintScreenやAlt+PrintScreenするなどして、とにかくクリップボードに図を入れます。
4. すると、そのブックの1シート目に、クリップボードに入れた図がどんどん貼りついていくではないですか!
さて、次回は、このコードの解説と、自分的に気になったポイントを書こうと思います。
0 件のコメント:
コメントを投稿