ExcelVBAマクロ MakeCode Arcadeの文字列Imageを作成するツールを作ってみる(完成編)

プログラミング

前回記事にて試行編について紹介しました。

この試行から今回ツールとして完成させる事ができたのでツールを紹介します。

ツールの概要

このツールは文字列をMakeCode ArcadeのImageで作るための物です。

MakeCode Arcadeには文字列を表示する機能が備わっているのですが文字が大きかったりスクロール表示されたりして文字数が多い場合に困る事が多いです。

そこで文字列をImageにして対応していましたがイメージエディターで文字を描くのはかなり大変で作業時間が一気に持っていかれてしまいます。

このツールではその作業時間を大幅に減らせるように文字列からMakeCode Arcadeのイメージで扱えるようにimageを自動で作ります。

ツール概要イメージ

ツールの仕様

ツールの仕様は以下の通りです。

入力仕様

入力は以下の通りです。

  • 文字列

文字列

Imageにしたい文字列です。

改行は未対応なので1行が制限です。

文字数はMakeCode ArcadeのImage幅最大が512ピクセルなので実質全角で64(512÷8)文字ですが入力値としては無制限(Excelの制限に依存)です。

出力仕様

出力は以下の通りです。

  • イメージ
  • 高さ

イメージ

「img`[LF]【イメージ】`」形式の文字列です。([LF]は改行コードLineFeed、【イメージ】は後述します)

【イメージ】は「[[[. | 1-9 | a-f][半角スペース]][+ …][LF]][+ …]」形式の文字列です。(わかりづらいですね)

例) 2×2ドットのイメージは以下の通り

2×2ドットのイメージ

MakeCode Arcadeのイメージの文字列そのままです。

値はカラーコードを示し、詳細な内容は省略します。(「ExcelVBAマクロ MakeCode ArcadeのImageを拡大するツールを作ってみた(詳細紹介)」の「機能仕様」「色更新する」参照)

出力したイメージの幅です。

MakeCode ArcadeのImageで貼り付け先として必要な幅(ピクセル数)です。

高さ

出力したイメージの高さです。

MakeCode ArcadeのImageで貼り付け先として必要な高さ(ピクセル数)です。

画面(シート)仕様

画面(シート)は以下の通りです。

  • 入出力シート
  • 結果シート
  • 美咲ゴシック2(半角)シート
  • 美咲ゴシック2(全角)シート

入出力シート

入力情報と出力情報を記入、表示するシートです。

文字列セルを変更する事でImgセル、幅セル、高さセルに結果を出力します。

入出力シートイメージ

結果シート

Image変換後に対応したドット絵を表示します。

結果シートイメージ

美咲ゴシック2(半角)シート

美咲ゴシック2(半角)の画像を取り込んだシートです。

半角文字の各ドットの情報を保持し、文字列に合わせて組み立ててImageを作成します。

美咲ゴシック2(半角)シートイメージ

美咲ゴシック2(全角)シート

美咲ゴシック2(全角)の画像を取り込んだシートです。

全角文字の各ドットの情報を保持し、文字列に合わせて組み立ててImageを作成します。

美咲ゴシック2(全角)シートイメージ

機能仕様

機能は以下の通りです。

  • 各機能を呼び出す
  • 文字を操作する
  • 美咲ゴシック2(半角)シートを操作する
  • 美咲ゴシック2(全角)シートを操作する
  • 入出力シートを操作する
  • 結果シートを操作する

かなり抽象的な書き方をしましたが細かく並べると多くなりすぎるのでこれぐらいの粒度で列挙しました。

プロジェクトエクスプローラー(機能毎にモジュール化している)

詳細は各機能の説明で紹介します。

各機能を呼び出す

各機能を呼び出すだけの機能です。

各機能を呼び出す(mMain)

処理の内容としては以下の手順で行います。

  1. 「入出力」シートから文字列を取得する
  2. 「結果」シートをクリアする
  3. 文字列から1文字抽出する
  4. JISコードを取得
  5. 「美咲ゴシック2(半角)」シートまたは「美咲ゴシック2(全角)」シートから該当文字のセル範囲をコピーする
  6. 「結果」シートへ貼り付ける
  7. 「結果」シートのイメージセルを配列で取得する
  8. 「入出力」シートへ結果の内容を書き込む

※手順3~6までは文字列数分繰り返す

文字を操作する

文字に関する操作を行う機能です。

文字を操作する(clsCharCtrl)

文字から10進数のJISコードと16進数のJISコードに変換できる機能です。

美咲ゴシック2(半角)シートを操作する

「美咲ゴシック2(半角)」シートでの操作を行う機能です。

美咲ゴシック2(半角)シートを操作する(clsWS1BMisakiGothic2Ctrl)

文字コードに該当する文字範囲のセルをコピーする機能です。

美咲ゴシック2(全角)シートを操作する

「美咲ゴシック2(全角)」シートでの操作を行う機能です。

美咲ゴシック2(全角)シートを操作する(clsWS2BMisakiGothic2Ctrl)

文字コードに該当する文字範囲のセルをコピーする機能です。

入出力シートを操作する

「入出力」シートでの操作を行う機能です。

入出力シートを操作する(clsWSInOutCtrl)

入力した文字列を取得したりImg、幅、高さを書き込む機能です。

結果シートを操作する

「結果」シートでの操作を行う機能です。

結果シートを操作する(clsWSReturnCtrl)

結果シートの既存データのクリア、フォントの文字(セル範囲)の貼り付け、結果シートのイメージを配列で取得する機能です。

貼り付け先は現在の最終列をクラス内で保持しているため、自動で文字列最後に貼り付けます。

まとめ

細かい処理内容は省略しましたが追っていけばどんな事をしているのか理解できると思います。

今回作ったツールは最低限としての文字列をMakeCode ArcadeのImageへ貼り付けできるフォーマットへの変換を行うだけですが折角なので縁取りや影などの文字修飾ができたら良いなと思っているのでもしかしたらバージョンアップするかも?

また何かツールの作成やバージョンアップなどしたら紹介しようと思います。

最後にここで紹介したツール「文字イメージ変換ツール」を提供します。

興味があればご自由にどうぞ。

コメント

タイトルとURLをコピーしました