2012年6月17日日曜日

エビデンス!エビデンス!!エビデンス!!! VBAでクリップボード監視

ひとつとっては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 件のコメント:

コメントを投稿