Excelの表をMarkdownでのテーブルに変換してクリップボードへコピーするVBAマクロ

前回のまとめと概要

前回の記事では「Excelの表をMarkdownでのテーブルに変換するユーザー定義関数」を紹介しました。

Excelの表をMarkdownでのテーブルに変換するユーザー定義関数
Markdownとテーブル・表 Markdown(マークダウン)は、プレーンテキストで書かれたコンテンツを簡単に書式設定できる軽量のマークアップ言語です。主にWebコンテンツやドキュメントの作成に使用されます。 サンプル: Markdown...

上記のページにあるユーザー定義関数を使う方法の欠点は、「成果物をnotepad(メモ帳)などへコピペすると上下に”が付く」というポイントです。

そこでこの記事では、「表をMarkdownでのテーブルに変換してクリップボードへコピーするVBAマクロ」をご紹介します。

表をMarkdownでのテーブルに変換してクリップボードへコピーするVBAマクロ

マクロのコード

Sub CopyTableAsMarkdown()
    Dim rng As Range
    Dim data() As Variant
    Dim row As Long, col As Long
    Dim markdown As String
    Dim separator As String
    Dim objHTML As Object

    ' 選択された範囲を取得
    Set rng = Selection
    data = rng.Value
    
    ' ヘッダー行の作成
    For col = 1 To UBound(data, 2)
        markdown = markdown & "|" & data(1, col)
    Next col
    markdown = markdown & "|" & vbCrLf
    
    ' 区切り行の作成
    For col = 1 To UBound(data, 2)
        separator = separator & "|---"
    Next col
    separator = separator & "|" & vbCrLf
    markdown = markdown & separator
    
    ' データ行の作成
    For row = 2 To UBound(data, 1)
        For col = 1 To UBound(data, 2)
            markdown = markdown & "|" & data(row, col)
        Next col
        markdown = markdown & "|" & vbCrLf
    Next row
    
    ' クリップボードにコピー
    Set objHTML = CreateObject("htmlfile")
    With objHTML.ParentWindow.ClipboardData
        .SetData "Text", markdown
    End With
End Sub

設置方法

  • {Alt}+{F11}キーでVBAエディタを起動します。
  • 「挿入」「標準モジュール」で「moduleN」を作成します。
  • 「moduleN」へ上記のコードを貼り付けます。
  • VBAエディタを閉じます。

使用方法

  • 変換したい表の範囲を選択します。
  • {Alt}+{F8}キーでマクロリストを起動します。
  • 「CopyTableAsMarkdown」を実行します。

  • 貼り付け先のアプリを開き、{Ctrl}+{V}で貼り付けます(サンプル図ではメモ帳に貼り付けている)。

コメント