VBAでExcel表をマークダウン記法に変換する方法!

VBAでExcel表をマークダウン記法に変換する方法!

VBAでExcel表をマークダウン記法に変換したいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAでExcel表をマークダウン記法に変換する方法がわからない。
・外部サービスを利用せずにExcel表をマークダウン記法に変換したいがやり方がわからない。

ですよね。

今回はそんなお悩みを解決する

・VBAでExcel表をマークダウン記法に変換する方法

についてまとめます!

マークダウン(Markdown)記法とは

マークダウン(Markdown)記法は、テキストベースの軽量マークアップ言語です。

Web上での文書作成や編集によく使用されており、テキスト形式で書かれた内容がかんたんにHTML(HyperText Markup Language)に変換することができます。

Markdownの主な特徴

Markdownの主な特徴は以下の通りです

シンプルで読みやすい

Markdownは読みやすく書きやすいことを重視しており、平易なテキスト形式で書かれます。

HTMLへの変換

Markdown記述された文書はHTMLに変換することができ、Webサイトでの使用に適しています。

汎用性

ブログ投稿、ドキュメント、フォーラムの投稿など、さまざまな場面で広く使われています。
Markdownでの一般的な記法には、ヘッダー、強調(イタリックや太字)、リスト(番号付きや番号なし)、リンク、画像、引用、コードブロックなどがあります。これらの記法は、特別なツールなしで簡単に書くことができ、プレーンテキストエディターでの編集が可能です。

タカヒロ
タカヒロ
ブログ投稿でMarkdownが使えるようになるとかなり便利ですね!

Markdown記法一覧!

Markdown記法サンプル一覧!

VBAでExcel表をマークダウン記法に変換する完成イメージ

VBAでExcel表をマークダウン記法に変換する完成イメージについて説明します。

まず、エクセルの1シート目にマークダウンに変換したい表を用意します。

VBAを実装し、起動するボタンを設け、H1セルにマークダウン変換したテキストを出力するようにします。

VBAを実行すると、黄色い背景の箇所にマークダウン変換したテキストが出力されます。

VSCodeなどでマークダウンをプレビューするとHTMLのテーブルに変換できていることがわかります。

それではさっそくやってみましょう。

エクセルに表を用意する

エクセルの1シート目にマークダウンに変換したい表を用意しましょう。

空のボタンを開発タブをクリックし、フォームコントロール>ボタンから挿入し、
H1セルの背景を黄色に変えます。

ボタンを押すと、選択した表データがマークダウン変換され、H1セルにテキストを出力するようにします。

Excel表をマークダウン記法に変換するVBA

Excel表をマークダウン記法に変換するVBAを実装していきましょう。

以下サンプルコードです。

Sub 選択している表をマークダウン形式に変換()
    ' 変数の宣言
    Dim strMdTable As String
    Dim ragRow As Range
    Dim ragCell As Range
    Dim intRowNum As Integer
    Dim intColNum As Integer
    Dim rowIndex As Integer
    
    ' 選択範囲の行数と列数を取得します。
    intRowNum = Selection.Rows.Count
    intColNum = Selection.Columns.Count

    ' ヘッダー行を処理します。
    For Each ragCell In Selection.Rows(1).Cells
        strMdTable = strMdTable & "| " & ragCell.Value & " "
    Next ragCell
    strMdTable = strMdTable & "|" & vbCrLf

    ' 区切り行を追加します。
    For rowIndex = 1 To intColNum
        strMdTable = strMdTable & "|:--"
    Next rowIndex
    strMdTable = strMdTable & "|" & vbCrLf
    
    ' データ行を処理します。
    For Each ragRow In Selection.Rows
        If ragRow.Row <> Selection.Rows(1).Row Then
            For Each ragCell In ragRow.Cells
                strMdTable = strMdTable & "| " & ragCell.Value & " "
            Next ragCell
            strMdTable = strMdTable & "|" & vbCrLf
        End If
    Next ragRow

    ' 結果をシートのH1セルに出力します。
    Sheets(1).Range("H1") = strMdTable

    ' 完了のメッセージを表示します。
    MsgBox "マークダウン形式のテーブルが1シート目のH1セルにコピーされました。", vbInformation
End Sub

VBAを実装する

「VBAの実装手順」を参考にコードをVBEに実装し、
また、実行に便利なボタンを設け、追加したマクロを登録しましょう。

VBAを実行する

Excel表をマークダウン記法に変換してみましょう。

変換したい表をマウスかキーボードで選択します。

ボタンを押します。

メッセージが表示されたらOKです。

はい!Excel表をマークダウン記法に変換することができましたね!

VSCodeでHTMLに変換されるか試してみましょう。

生成したテキストを拡張子「.md」のファイルに張り付け、VSCodeで開きます。

プレビューを確認すると、HTMLのテーブルに変換されていることがわかりますね!

項目領域とデータ領域もしっかりわかれています!

アレンジとして、表の一部を選択すると、その範囲に絞り込まれた上でマークダウン記法に変換することができます。

VBAの説明

 

選択範囲の総行数と総列数を取得します。

intRowNum = Selection.Rows.Count
intColNum = Selection.Columns.Count

選択範囲の最初の行(ヘッダー行)の各セルに対してループ処理を行い、その値をマークダウン形式でstrMdTableに追加します。

For Each ragCell In Selection.Rows(1).Cells
strMdTable = strMdTable & "| " & ragCell.Value & " "
Next ragCell
strMdTable = strMdTable & "|" & vbCrLf

区切り行の追加
マークダウンテーブルのフォーマットでは、ヘッダー行の直後に区切り行が必要です。
これは、ヘッダーの下にある各列に対して|:–を追加することで生成されます。

For rowIndex = 1 To intColNum
strMdTable = strMdTable & "|:--"
Next rowIndex
strMdTable = strMdTable & "|" & vbCrLf

データ行の処理
選択範囲の2行目以降(ヘッダー行以外)の各行に対してループ処理を行います。
各行の各セルの値をstrMdTableにマークダウン形式で追加します。

For Each ragRow In Selection.Rows
If ragRow.Row <> Selection.Rows(1).Row Then
For Each ragCell In ragRow.Cells
strMdTable = strMdTable & "| " & ragCell.Value & " "
Next ragCell
strMdTable = strMdTable & "|" & vbCrLf
End If
Next ragRow

処理されたマークダウン形式のテーブルがSheets(1).Range(“H1”)に出力されます。
これは1番目のワークシートのH1セルを指定している意味となります。
もし別のセルにしたい場合はこちらを変更してください。

Sheets(1).Range("H1") = strMdTable

 

VBAの実装手順

実装手順は以下の通りです。

今回はExcel側にこのVBAを実装します。

①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。

②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。

③右ペインのウインドウに上記のVBAを入力します。

こちらで完了です。

VBAを実行する

では早速VBAの実行をしてみましょう。

①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。

②処理がされたことが確認できれば完了です。
※完了メッセージやステータス管理など必要に応じて実装してもらえばと思います。

さいごに

いかがでしょうか。

今回は、

・VBAでExcel表をマークダウン記法に変換する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。








コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です