Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


20208 / 76732 ←次へ | 前へ→

【61946】これを見てもフォルダ作る所とか分かりません
回答  あいこ 初心者  - 09/6/13(土) 23:01 -

引用なし
パスワード
   ■ ワークシートでアニメーション!

「エクセルのワークシート上の任意の場所でアニメーションを動かしたい!」
業務用のアプリケーションや趣味のフリーソフトの開発でそのような要望を持たれた方は少なくないと思います。

エクセルのワークシート上でGIFアニメを再生できれば簡単なのですが…。残念ながらワークシート上でGIFアニメを再生するのは無理なようです。

しかし、アニメーションを再生するのは実はそんなに難しいことではありません。ExcelVBAを使えば、簡単にあなたのワークシート上で、あらかじめ用意されたアニメーション画像を再生することが可能です。

今回はExcel2003とExcel2007の両方で、ワークシート上に透過GIFの画像をアニメーション再生してみましょう。
アニメーション用の透過GIF画像は、ご自身で用意してください。

Excel2003までなら…

Excel2003までなら、以下のマクロで簡単に任意の場所にGIF画像をアニメーション再生できます。


Public Sub test()
Dim WrkPicture(9) As Picture
Dim i As Long
  For i = 0 To 9
    Set WrkPicture(i) = ActiveSheet.Pictures.Insert(LCase(ThisWorkbook.Path _
                                              & "\img\" & i & ".gif"))
    If i <> 0 Then
      WrkPicture(i - 1).Delete
      Set WrkPicture(i - 1) = Nothing
    End If
    Call Sleep (100)
    DoEvents
  Next i
  WrkPicture(i - 1).Delete
  Set WrkPicture(i - 1) = Nothing
End Sub

まず、アニメーション用の透過GIF画像を10枚用意します。GIF画像のファイル名は0.gif〜9.gifとします。
次に実行するマクロブックのある場所に"img"というフォルダを作り、その中にGIF画像を格納します。
これで準備は完了です。上記マクロを実行してみましょう。

Excel2003までなら、アクティブセルのそばに用意されたGIF画像が連続して現れ、10枚目の画像が表示されたあと、画像が消えるはずです。


マクロの中を詳しく見ていきましょう。

まず、宣言部でAPIのSleep関数を定義しています。これは、アニメーションの再生にウェイトをかける必要があるためです。(ウェイトをかけないと、一瞬でアニメーションが再生され、わけがわかりません)
今回は、0.1秒間隔(Call Sleep (100))で10枚の画像を表示させるので、アニメーションの再生時間は1秒になります。

Pictureオブジェクトで定義した配列、WrkPicture(9)に用意したGIF画像を0.gifから順番に画像挿入していきます。
WrkPicture(1)が挿入された時点で、その下にWrkPicture(0)がまだ残っています。これを消さないと、画像がどんどん上に重なっていきますので、2回目以降のループで消しています。

わざわざこんなことをしているのは、このほうがアニメーションの再生が滑らかになるからです。
(次の画像を重ねる前に下の画像を消すと、アニメーションがブチブチになります)
もちろん忘れずに、DoEventsで画像更新をしてやる必要もあります。

ループを抜けた後の画像クリアは必要に応じて、使い分けてください。画像をそのまま残すならこの部分の処理は必要ありません。

さて、せっかくですので、ワークシートのセレクションチェンジイベントからCallさせてみましょう。
2 hits

【61945】エクセル上で簡単なgif動画を作りたい あいこ 初心者 09/6/13(土) 22:58 質問
【61946】これを見てもフォルダ作る所とか分かりませ... あいこ 初心者 09/6/13(土) 23:01 回答
【61947】Re:これを見てもフォルダ作る所とか分かり... かみちゃん 09/6/13(土) 23:09 発言
【61948】Re:これを見てもフォルダ作る所とか分かり... neptune 09/6/14(日) 9:22 発言

20208 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free