Sequence Makerで🎅クリスマスをお祝いする🎄✨✨✨

## はじめに
Sequence MakerはExcelから測定器を制御可能にするアドインです。Sequence Makerのアドベントカレンダーも本日で最終日です。せっかくなのでSequence Makerでクリスマスを祝いたいと思います。なお、Sequence Makerについての詳細は以下の記事を参照ください。

https://qiita.com/sequencemaker/items/8e6a370ab0a793a06a3b

:::note warn
***お断り***
本記事の内容はSequence Maker開発元の公式見解ではなく、あくまでも個人が趣味の範囲内で執筆しているものです。記事の内容について開発元へ問い合わせることはお控えください。ご質問・要望などは各記事のコメント欄へお願いいたします。
:::

## Merry Christmas✨

![レコーディング 2024-12-24 231950 (4).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/52adcd96-5cac-b13c-7d86-43391c91d6af.gif)

## ネタばらし
なんと!Sequence Makerを使うと絵が描けてしまうんですね。。。
どうやっているかというと、V1.70で追加された仮想インターフェイスを使って、BMP画像の色データをコンマ区切りの応答で返すように定義し、区切り文字で分割でセルに入れた後、VBAでセルに色を付けています。順番に見ていきましょう。

## 1⃣イラストを用意する
仮想インターフェイスは100個まで応答を定義できる（正確には#1～#12まで使えば1200個まで定義できる）ので、縦100px以内の画像を用意します。今回はこちらの画像をお借りしました。ペイントなどでBMP画像にしておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/7e8d91ad-80f5-5367-ce7d-1ebd5c626c7a.png)
（アイコン屋めがぴこ/shell様）

https://x.com/mpshell

## 2⃣BMP画像を色データのCSVに変換する
今回は「BMP2CSV」というフリーソフトを使用しました。BMP画像を選んで、「RGBをHEX形式で一つのファイルに保存する」を選び「CSVファイルを作成」でCSVファイルが出力されます。

https://www.vector.co.jp/soft/win95/art/se108144.html

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/d17d3399-4bd4-ba9d-3753-b12b24371ad9.png)

こんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/d1913653-000e-02e4-a5ff-cc520047c387.png)

## 3⃣仮想インターフェイスに登録する
先ほどのCSVを使って、Excelでこんな感じにデータを作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/0a3bfd6f-8b75-38fc-8141-a5948e2df508.png)

画像の上から順番に1?や2?で応答を返す感じです。Excelでデータを作ったら、仮想インターフェイスの定義にエイヤとコピペします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/f5072a6f-814e-40bf-b5d6-505f0b8d7cdc.png)

## 4⃣VBAのコードを作る
ChatGPTさんにお願いして作ってもらいました。これでセルに「#123456」のようにカラーコードを入力すると、セルの色が変わるようになります。

```vb
' セルに変更があったときに呼ばれるイベント
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cell As Range
    Dim InputValue As Variant
    Dim ColorCode As String
    Dim Red As Long, Green As Long, Blue As Long
    Dim ColorValue As Long

    Application.EnableEvents = False

    For Each ChangedCell In Target

        ' 値を取得
        InputValue = ChangedCell.Value
        
        ' 文字列の場合
        ColorCode = Trim(InputValue)
        ' 16進数のRGB形式か確認
        If Len(ColorCode) = 7 And ColorCode Like "[#][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f][0-9A-Fa-f]" Then

            ' 16進数カラーコードを分解
            Red = CLng("&H" & Mid(ColorCode, 2, 2))
            Green = CLng("&H" & Mid(ColorCode, 4, 2))
            Blue = CLng("&H" & Mid(ColorCode, 6, 2))
            ' 16進数のRGBカラーコードを生成（BGR順）
            ColorValue = Blue * 65536 + Green * 256 + Red

            ' 背景色を設定
            ChangedCell.Interior.Color = ColorValue
        
        End If

    Next ChangedCell

    Application.EnableEvents = True

End Sub
```

## 5⃣シーケンスを作る
Excel上にシーケンスを作成します。コンマで区切るので、先頭に#SPLIT(ON)を入れています。それ以降は仮想インターフェイスで定義したコマンドを羅列します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/1870f26a-1948-520e-ccfb-219b63e3b8ab.png)

## 6⃣実行
「コマンド送受信」ボタンを押して実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/e226edf2-f3cd-1793-d810-0fe0c7555374.png)

こんな感じで上から順番に画像ができあがっていきます。

## まとめ
というわけで、なんとか無事にSequence Makerのアドベントカレンダーカレンダーを全て埋めることができました。最後はクリスマスっぽい感じで締めくくる事ができて良かったです。
さて、そろそろ🎅サンタさんが来る時間のようなので、これで終わりにしたいと思います。


（・・・いや、私が今から🎅になるんだが）


メリークリスマス🎄✨✨✨

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3821782/fd9f4b5a-ad9c-c1a2-a0aa-b7d42dd8576c.png)

（https://www.noradsanta.org/ja/map より引用）