「 Excel =表計算やデータ管理だけの堅いソフト」だと思っていませんか? 実は、Excel VBA(マクロ)が持つ「図形(Shape)操作機能」と「タイマー制御」を組み合わせると、Excel の画面上で**セリフがシュシュシュッと流れる4コマアニメーション**を作ることができるんです。
今回は、初心者でもブログのコードをコピペするだけで一発で動かせる「入門編(Ver.1)」のプログラムを用意しました。
ご自身で用意したお気に入りのイラストや写真(PNGやJPG)を使って、オリジナルの4コマを動かすことも簡単にできます。ぜひ最後までお読みください!
🎥 完成イメージと今回の仕組み
まずは、今回作成するプログラムの動きのイメージです。
1. 自動クリア: 実行ボタンを押すと、画面上の古い画像や吹き出しが一瞬でリセットされます。
2. 画像の自動配置: 1コマ目の画像が指定の位置にパッと表示されます。
3. タイピング演出: 画像の右上に吹き出しが出現し、セリフが1文字ずつ流れるように表示されます。
4. 4コマ連動: 数秒のインターバルを挟みながら、2コマ目、3コマ目、4コマ目と自動でページがめくられるように進んでいきます。
文字が流れる途中で、特定のキーワード(今回は「ヒット」「筋肉痛」など)の色や太さが自動で変わるプチ演出も仕込んでいます!
🛠️ 事前準備:ファイルと画像の配置
プログラムを動かす前に、1つだけ大切なルールがあります。
1. 新しい Excel ファイルをマクロ有効ブック(.xlsm)として保存します。
2. その Excel ファイルと「全く同じフォルダ」の中に、表示させたい4コマの画像(計4枚)を保存してください。 上記の動画で用いた顔の絵のサイズは、177×176ピクセルです。
⚠️ 注意1: ファイル名(拡張子)は、コード内の指定と完全に一致させておく必要があります(デフォルトでは `コマ1.png` ~ `コマ4.png` に設定しています)。
⚠️ 注意2: この時点で「内容がよくわからない」、という方は下記のサイトを一度ご覧ください。きっとわかるようになります。

コピペで動く!VBAソースコード
Excel の `Alt + F11` で VBA エディタを開き、「挿入」>「標準モジュール」を作成して、以下のコードをそのまま貼り付けてください。
#' Excel 2010以降(VBA7)を前提。32bit版でも64bit版でもこれで動きます
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub 四コマアニメーション上映()
Dim base_path As String
Dim frame As Integer
Dim IntervalSeconds As Integer
Dim NextTime As Date
' ==========================================
' 🛠️ 読者カスタマイズエリア(ここを自由に変えてね!)
' ==========================================
' 1. セリフの設定(4コマ分)
Dim serifu(1 To 4) As String
serifu(1) = "昨日は野球に行ったよ!"
serifu(2) = "なんとヒットを2本も打った!"
serifu(3) = "まあ、このくらいは当然ですが。"
serifu(4) = "……でも、今日は全身筋肉痛。"
' 2. 画像ファイルの設定(4コマ分・同じフォルダ内のファイル名)
Dim img(1 To 4) As String
img(1) = "コマ1.png"
img(2) = "コマ2.png"
img(3) = "コマ3.png"
img(4) = "コマ4.png"
' 3. 1コマの表示間隔(秒)
IntervalSeconds = 4
' ==========================================
' マクロのExcelファイルと同じフォルダのパスを自動取得
base_path = ThisWorkbook.Path & "\"
' 4コマをタイマーで順次セット
For frame = 1 To 4
NextTime = Now + TimeSerial(0, 0, (frame - 1) * IntervalSeconds)
' 実行するコマンドを作成してタイマーセット
Application.OnTime NextTime, _
"'個別コマ表示 " & frame & _
", """ & base_path & img(frame) & """" & _
", """ & serifu(frame) & """'"
Next frame
End Sub
' 実際に1つのコマを描画するシステムマクロ
Sub 個別コマ表示(frame As Integer, pic_path As String, text As String)
Dim ws As Worksheet
Dim shp As Shape
Dim lsp As Shape
Dim i As Integer
Dim current_text As String
Set ws = ActiveSheet
' 1. 画面上の古い画像や吹き出しをクリア
For Each shp In ws.Shapes
If shp.Type = msoPicture Or shp.Type = msoAutoShape Then
shp.Delete
End If
Next shp
' 2. 画像の配置(位置・サイズは一律固定で初心者にも安心)
If pic_path <> ThisWorkbook.Path & "\" And Dir(pic_path) <> "" Then
ws.Shapes.AddPicture Filename:=pic_path, LinkToFile:=False, SaveWithDocument:=True, _
Left:=30, Top:=50, Width:=180, Height:=180
End If
' 3. 吹き出し(セリフ枠)の作成(画像の右上にゆったり配置)
If text Like "*まあ*" Then
Set lsp = ws.Shapes.AddShape(msoShapeCloudCallout, 180, 5, 220, 100) ' 雲型
lsp.Adjustments.Item(1) = -0.2
Else
Set lsp = ws.Shapes.AddShape(msoShapeOvalCallout, 180, 5, 200, 90) ' 楕円
End If
' 吹き出しのデザイン調整(背景:白 / 線:黒)
With lsp
.Fill.ForeColor.RGB = RGB(255, 255, 255)
.Line.ForeColor.RGB = RGB(0, 0, 0)
.Line.Weight = 1.5
End With
' 4. セリフを一字ずつ流す演出(タイピング風)
For i = 1 To Len(text)
current_text = Left(text, i)
With lsp.TextFrame.Characters
.text = current_text
.Font.Size = 11
.Font.Name = "MS ゴシック"
.Font.Color = RGB(0, 0, 0) ' まず流れてきた文字全体を「黒」にセット
End With
' 特定のキーワードを目立たせる装飾(後述のシステムを呼び出し)
Call 部分文字装飾(lsp, current_text, "ヒット", RGB(255, 69, 0), True)
Call 部分文字装飾(lsp, current_text, "筋肉痛", RGB(0, 0, 255), True)
' 配置の真ん中寄せ
lsp.TextFrame.HorizontalAlignment = xlHAlignCenter
lsp.TextFrame.VerticalAlignment = xlVAlignCenter
' 流れる速度の調整(100ミリ秒待機)
DoEvents
Sleep 100
Next i
End Sub
' 特定の文字だけ色や太さを変える装飾システム
Private Sub 部分文字装飾(targetShape As Shape, fullText As String, keyword As String, colorRGB As Long, isBold As Boolean)
Dim pos As Integer
pos = InStr(fullText, keyword)
If pos > 0 Then
With targetShape.TextFrame.Characters(pos, Len(keyword)).Font
.Color = colorRGB
.Bold = isBold
End With
End If
End Sub
💡 【開発の罠】動かないときのトラブルシューティング
今回のマクロを開発するにあたり、 VBA 特有の「初心者から中級者までガチで引っかかるディープな罠」がいくつかありました。もしコピペしてエラーが出た場合は、ここをチェックしてみてください!
①「マクロが実行できません」と拒否される場合
Excel のセキュリティによって止められているか、または「マクロ名(プロシージャ名)に数字や記号を使っている」のが原因です。
VBA の仕様上、Sub 4コマ上映() のように先頭に数字を持ってきたり、Sub ▼コマ表示() のように記号を使ったりしたまま Application.OnTime(タイマー)で呼び出そうとすると、Excelがマクロを見失ってエラーになります。コード内はすべて「漢字」の安全な名前に整えてあります。
② 文字が一部しか映らない、または消えてしまう場合
一文字ずつ文字を増やすタイピング演出の途中、特定の文字に色を塗ると、Excelのフォーカスがバグって「それ以降の普通の文字」が透明(白)になってしまう現象があります。
本プログラムでは、文字が1文字増えるたびに「一回全体を黒文字にリセットしてから、キーワードを上書きする」という緻密な処理順序にすることで、この描画バグを回避しています。
✍️ コード内の調整ポイント
- 読者が自分の画像やセリフに差し替えたい時に迷わないよう、🛠️ 読者カスタマイズエリア というコメント枠をコード内に明記しました。
- ご自身がデバッグ中に格闘された「リアルなエラーと解決策」をトラブルシューティング(H3要素)として配置しました。これにより、同じ VBA エラーで検索してきたユーザーが、この記事に検索から辿り着きやすくなる(SEO強化)というメリットが生まれます。
ご自身のWordPress等のレイアウトに合わせて、適宜修正してご活用ください!
コメント