goo blog サービス終了のお知らせ 

エクセルアニメーション

エクセルでアニメーションを動かして遊びましょう

エクセルアニメーション第18回(応用編10)クリスマスカード

2009-10-20 | Weblog

今回からは、”エクセル動くクリスマスカード”を作成してみましょう。

完成見本です。



今回紹介するのは、斜め移動、拡大、縮小、画面切り替えです。

まず、素材を集めましょう。素材は次の5点です。
1.もみの木



2.サンタクロースX2(1個をコピー )
3、そり
4.プレゼント(8個ぐらい)
5.雪景色 (適当な絵、または、写真を準備)画面いっぱいに挿入)
6.ワード
7.星(10個ぐらい)

それでは、さっそく取り掛かりましょう。

1.2.3.4は、完成図とちがっていてもいいので、クリップアートなどから自分の気に入ったものを取り込みましょう。
今回は、インターネット上のフリー素材から取り込みました。

5の「雪景色」は、フリー素材屋HOSHINOさんのサイト
「http://www.s-hoshino.com/f_photo/fuyu.html」からいただきました。

6は、ワードアートで作成します。
[挿入]-[図]-[ワードアート]でサンプル文字(ここに文字を入力)のところに”Merry Christmas"と入れます。字の大きさはあとで調整しますから、フォント(Times New Roman)見本をみながら選んでください。



7は、オートシェイプの星とリボンの星を使って10個コピーします。

すべてが入ったら、それぞれに名前をつけましょう。
名前のつけ方は”エクセルアニメーション 第2回”を参照してください。

左向きの小さなサンタ(そりに乗せる)・・・サンタ1
上から降りてくるサンタ・・・サンタ2
右向きの小さなサンタ(帰りのそりに乗せる)・・・サンタ3

あとは、”そり”、”ワード”とします。(プレゼント、雪景色、もみノ木は変更しません)

星は、間違わないように、”星1”から”星10”まで名前をつけましょう。

材料が揃ったら製作にとりかかりましょう。

まず、背景の”雪景色”をクリックして、周りにハンドル(白い丸)が付いたらドラッグして画面いっぱいに拡大します。(大きさは、パソコンの解像度などにより異なりますから調整してください。)

見本を参考にして
”もみノ木”の大きさを調整しておいて、画面の左位置に配置しましょう。
”そり”を画面右端に配置しましょう。
”サンタ”を小さくしてそりの座席に乗るように持ってきます。
”ワードアート”を小さくして、画面左上に配置します。

これからいよいよマクロの記録に入ります。
今回は、3個のオブジェクト(そり、サンタ、ワード)を移動させますので、途中でやり直ししないように注意しましょう。
失敗したら、全部削除してやり直しをしてください。修正するよりそのほうが早いでしょう。

第3回で作成した”マクロの記録”ボタンをクリックします。

まず、そりのクリップの周りに、ハンドル(白い小さな○)が付いていたときは、一度、ほかの場所をクリックしてハンドルをなくしておきます。

“そり“をクリックして数センチ左へ移動させます。
つぎに、“サンタ”をクリックして左上へ動かします。
つづいて、“ワード”をクリックして画面中央まで、右下方向へ移動させます。
さらに、“ワード”の大きさを、見本を参考にして拡大します。このさい、少しぐらい大きさが違っても問題ありません。

「記録終了」ボタンを押します。これで、マクロの記録は終了です。

出来上がったマクロは次のようなものです。数値が違っていても問題ありません。

Sub Macro1()
' Macro1 Macro
' マクロ記録日 : ユーザー名 :
' Keyboard Shortcut:

ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.IncrementLeft -50.4
Selection.ShapeRange.IncrementTop -14.95

ActiveSheet.Shapes("サンタ").Select
Selection.ShapeRange.IncrementLeft -39.88
Selection.ShapeRange.IncrementTop -28.25

ActiveSheet.Shapes("ワード").Select
Selection.ShapeRange.IncrementLeft 39.88
Selection.ShapeRange.IncrementTop 28.25
Selection.ShapeRange.ScaleWidth1.85,msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight4.94,msoFalse,msoScaleFromTopLeft

End Sub

ここから説明をしていきます。

この部分は、“そり”を左に移動する部分です。
ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.IncrementLeft -50.4・・・左へ
「Selection.ShapeRange.IncrementTop 14.95」(Top)がある場合は、その行は削除します。

これにより左へ移動します。

つぎの部分は、“ワード”(Merry Christmas)を右下へ移動します。
ActiveSheet.Shapes("ワード").Select
Selection.ShapeRange.IncrementLeft 39.88
Selection.ShapeRange.IncrementTop 28.25

つぎの部分は、“ワード”を拡大する部分です。
Selection.ShapeRange.ScaleWidth1.85,msoFalse, msoScaleFromTopLeft
数値(1.85)は倍率です。

この部分は“ワード”の高さを拡大します。
数値(4.94)は倍率です。
Selection.ShapeRange.ScaleHeight4.94,msoFalse,msoScaleFromTopLeft
  
ただし、今回は倍率は使わず、絶対数で拡大していきます。

それでは、完成コードは次のようになります。

前回までと同じく、できるだけコピーアンドペーストで修正を行いましょう。そのほうが、用語の打ち間違い(英文のつづりの間違い)などが起こらなくて便利です。 (名前に間違いがなければ、そのまま貼り付けても動きます)
数値は、画面を見ながら少しずつ変更して調整してください。

Sub 初期値()
'サンタ1(そりの上)
ActiveSheet.Shapes("サンタ1").Visible = True
ActiveSheet.Shapes("サンタ1").Select
Selection.ShapeRange.Left = 690
Selection.ShapeRange.Top = 325
Selection.ShapeRange.Width = 30

'サンタ2
ActiveSheet.Shapes("サンタ2").Visible = True
ActiveSheet.Shapes("サンタ2").Select
ActiveSheet.Shapes("サンタ2").Select
Selection.ShapeRange.Left = 50
Selection.ShapeRange.Top = 50
Selection.ShapeRange.Width = 50
Selection.ShapeRange.Visible = False

'サンタ3
ActiveSheet.Shapes("サンタ3").Visible = True
ActiveSheet.Shapes("サンタ3").Select
Selection.ShapeRange.Left = 125
Selection.ShapeRange.Top = 110
Selection.ShapeRange.Width = 50
Selection.ShapeRange.Visible = False

'メリークリスマス
ActiveSheet.Shapes("文字").Select
Selection.ShapeRange.Left = 50
Selection.ShapeRange.Top = 100
Selection.ShapeRange.Width = 10

'そり
ActiveSheet.Shapes("そり").Visible = True
ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.Left = 550
Selection.ShapeRange.Top = 330

'プレゼント
For P = 1 To 8
ActiveSheet.Shapes("図" & P).Visible = False
Next

End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
'そりの行進
Sub Parade()
'Macro
' マクロ記録日 : ユーザー名 :
'
' Keyboard Shortcut:

’音楽を入れる場合(今回は入れません)
'ミュージック
’ActiveSheet.Shapes("Object 69").Select
’Selection.Verb Verb:=xlPrimary

初期値   ’これはマクロ名ですですから、間違わないように。

'そりの行進
For n = 1 To 300  ’もみの木のそばまで
'そり
ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.IncrementLeft -1
DoEvents
'サンタ
ActiveSheet.Shapes("サンタ1").Select
Selection.ShapeRange.IncrementLeft -1
DoEvents
Next

'サンタ上昇
ActiveSheet.Shapes("サンタ1").Select
For n = 1 To 60
Selection.ShapeRange.IncrementLeft -5
DoEvents
Mytimer (0.05)
Selection.ShapeRange.IncrementTop -4
Mytimer (0.05)
DoEvents
Next

'そり反転
ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.Flip msoFlipHorizontal
Selection.ShapeRange.Left = 300

'サンタ切り替え
ActiveSheet.Shapes("サンタ1").Visible = False '小さいサンタを消す
ActiveSheet.Shapes("サンタ2").Visible = True '大きいサンタを出す

'Merry Christmasの縦横比を固定
ActiveSheet.Shapes("文字").Select
Selection.ShapeRange.LockAspectRatio = msoTrue '縦横比固定

'Merry Christmasの文字をだんだん大きく
For n = 1 To 60
ActiveSheet.Shapes("文字").Select
Selection.ShapeRange.Height = n
Selection.ShapeRange.IncrementLeft 1
Selection.ShapeRange.IncrementTop 1.2
DoEvents

'サンタもいっしょに
ActiveSheet.Shapes("サンタ2").Select
Selection.ShapeRange.IncrementLeft 1
Selection.ShapeRange.IncrementTop 1.2
DoEvents
Next

'文字だけ右へ
For n = 1 To 70
ActiveSheet.Shapes("文字").Select
Selection.ShapeRange.IncrementLeft 3
DoEvents
Next

'サンタプレゼント配り
P = 2
ActiveSheet.Shapes("サンタ2").Select
ActiveSheet.Shapes("図1").Visible = True

r = 1: rr = 1
For n = 1 To 330
Selection.ShapeRange.IncrementLeft 1 * r
Selection.ShapeRange.IncrementTop 0.5
Selection.ShapeRange.IncrementRotation 10 * rr
rr = rr * -1
Mytimer (0.1)

On Error Resume Next

If n Mod 40 = 0 Then
ActiveSheet.Shapes("図" & P).Visible = True
P = P + 1
End If
'反転
If Selection.ShapeRange.Left > 250 Or Selection.ShapeRange.Left r = r * -1
End If

Next

'サンタ消滅
Selection.Visible = False
'--------------------------------------------------------------------
'帰り
'小さいサンタに変更
ActiveSheet.Shapes("サンタ3").Visible = True

'そりの帰り
For n = 1 To 350
'サンタ
ActiveSheet.Shapes("サンタ3").Select
Selection.ShapeRange.IncrementLeft 1
DoEvents
'そり
ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.IncrementLeft 1
DoEvents
Next

ActiveSheet.Shapes("そり").Select
Selection.ShapeRange.Flip msoFlipHorizontal '反転

'ツリー点滅

Dim L As Integer
Dim S As Integer

On Error Resume Next 'エラー回避

Mylamp:

L = 1: S = 1

Do While True    'Loopまでを繰り返し

'空の星
ActiveSheet.Shapes("星" & S).Visible = False
DoEvents
Mytimer (0.2)
ActiveSheet.Shapes("星" & S).Visible = True
DoEvents
S = S + 1
If S > 10 Then S = 1
Mynext:
L = L + 1
If L > 11 Then GoTo Mylamp
rep = rep + 1
If rep > 50 Then
初期値
Range("a1").Select
Exit Sub
End If
Loop

End Sub
Sub 終了()
初期値
Range("a1").Select
End
End Sub


最後に、前回作成した ”Sub Mytimer”をコピーして貼り付けて置いてください。

Sub Mytimer(t)
mytime = Timer
Do Until Timer > mytime + t
DoEvents
Loop
End Sub


出来上がったら、”スタート”ボタンと”停止”ボタンをつけて動かしてみましょう。

うまく動きましたか?完成図のようにならない場合は、数値を変更して何回もテストをして決定してください。
手を掛けるほど、真心のこもったカードが出来上がりますよ。
では、今回はこれで終了です。

「Merry Christmas!」 Good Luck!

参考作品
http://yahoo.jp/box/GGyoSQ













最新の画像もっと見る