はてな記法 テーブル作成マクロ ができるまで
はじめに
はてな記法では | (縦線)を使うことで簡単に表を作ることができます。
すごく便利ですが、手打ちだとさすがに限界がありますので、Excelの表からテーブルを作成できるようにしてみましょう。
やりたいこと
これを
人物名 | 役職 | 役者 |
---|---|---|
千石 武 | ギャルソン | 松本 幸四郎 |
原田 禄郎 | パトロン | 筒井 道隆 |
磯野 しずか | シェフ・ド・キュイジーヌ | 山口 智子 |
三条 政子 | バルマン | 鈴木 京香 |
水原 範朝 | ディレクトール | 西村 雅彦 |
梶原 民生 | メートル・ド・テル | 小野 武彦 |
稲毛 成志 | シェフ・パティシエ | 梶原 善 |
大庭 金四郎 | ソムリエ | 白井 晃 |
和田 一 | コミ | 伊藤 俊人 |
畠山 秀忠 | スー・シェフ | 田口 浩正 |
佐々木 教綱 | プロンジュール | 杉本 隆吾 |
ジュラール・デュヴィヴィエ | ガルド・マンジェ | ジャッケー・ローロン |
のように表示したいとして
|*人物名|*役職|*役者| |千石 武|ギャルソン|松本 幸四郎| |原田 禄郎|パトロン|筒井 道隆| |磯野 しずか|シェフ・ド・キュイジーヌ|山口 智子| |三条 政子|バルマン|鈴木 京香| |水原 範朝|ディレクトール|西村 雅彦| |梶原 民生|メートル・ド・テル|小野 武彦| |稲毛 成志|シェフ・パティシエ|梶原 善| |大庭 金四郎|ソムリエ|白井 晃| |和田 一|コミ|伊藤 俊人| |畠山 秀忠|スー・シェフ|田口 浩正| |佐々木 教綱|プロンジュール|杉本 隆吾| |ジュラール・デュヴィヴィエ|ガルド・マンジェ|ジャッケー・ローロン|
と書くとできます。
ので、Excelの表からこのテキストを作るマクロを作ってみましょう。
やってみる
今回は、途中経過を見せながら、一気に完成形まで行ってみたいと思います。
1行表示させる
Sub makeTblTxt() Dim i As Long, j As Long Dim str As String For j = 1 To 3 str = str + "|" & Cells(1, j) Next Debug.Print str & "|" End Sub
- 縦、横にfor文を使う時は、縦に「i」、横に「j」を使うことが多いです(おそらく一般的?)
- イミディエイトウインドウに出るテキストをコピーすれば事足りるので、テキストファイルに出力等せずに「Debug.Print」で済ませています
指定行繰り返す
Sub makeTblTxt() Dim i As Long, j As Long Dim str As String For i = 1 To 13 str = "" For j = 1 To 3 str = str + "|" & Cells(i, j) Next Debug.Print str & "|" Next End Sub
- 「str = ""」を入れないと、文字列がどんどん長くなってしまいますので気をつけましょう
- 「Cells(1, j)」のままだとずっと1行目の情報が表示されます(ありがち)
見出し行だけちょっと変える
Sub makeTblTxt() Dim i As Long, j As Long Dim str As String For i = 1 To 13 str = "" For j = 1 To 3 If i = 1 Then str = str + "|*" & Cells(i, j) Else str = str + "|" & Cells(i, j) End If Next Debug.Print str & "|" Next End Sub
- 単純に1行目なら「|*」をつけるようにしています
まとめ
マクロの基本という感じがして、なかなかよかったですね。
最後のがとりあえずの完成形ですが、わかりやすく改善点が残っています。
が、
それはまた、別の話...