エクセルの表をMarkdown形式に変換する
はじめに
エクセルで書いた表をMarkdown形式に変換するVBAマクロを作成しました。
自分用なので細部は変更して使用してください。
使い方
- マクロをエクセルに登録
- 変換したい表の範囲を選択
- マクロを実行
- クリップボードにコピーされる
ソース
Option Explicit
' 表をMarkdown形式に変換する
Const COLUM_CENTERLING_STR As String = "---"
Const PIPE_STR As String = "|"
Const INNER_COLUMN_LINE_BREAK = "{{br}}"
Public Sub createMarkdownTable()
' 選択範囲を取得
Dim selectRange As Range
Set selectRange = ActiveWindow.Selection
Dim tableState As String
tableState = getMarkdownTable(selectRange)
With New DataObject
.SetText tableState
.PutInClipboard
End With
MsgBox "作成した文字列をクリップボードに出力しました。"
End Sub
Function getMarkdownTable(selectRange As Range) As String
Dim ret As String
' ヘッダ部を読み込み
ret = readRow(selectRange, 1) & vbCrLf
' センタリング設定
Dim i As Integer
Dim centerling As String
centerling = PIPE_STR
For i = 1 To selectRange.Columns.Count
centerling = centerling & COLUM_CENTERLING_STR & PIPE_STR
Next i
ret = ret & centerling & vbCrLf
' ボディ部を読み込み
For i = 2 To selectRange.rows.Count
ret = ret & readRow(selectRange, i) & vbCrLf
Next i
getMarkdownTable = ret
End Function
Function readRow(selectRange As Range, rowCnt As Integer) As String
Dim ret As String
ret = PIPE_STR
' 1行読み込む
Dim i As Integer
Dim value As String
For i = 1 To selectRange.Columns.Count
value = selectRange.Cells(rowCnt, i)
' カラム内改行を置換
value = Replace(value, vbLf, INNER_COLUMN_LINE_BREAK)
ret = ret & value & PIPE_STR
Next i
readRow = ret
End Function
Option Explicit
' 表をMarkdown形式に変換する
Const COLUM_CENTERLING_STR As String = "---"
Const PIPE_STR As String = "|"
Const INNER_COLUMN_LINE_BREAK = "{{br}}"
Public Sub createMarkdownTable()
' 選択範囲を取得
Dim selectRange As Range
Set selectRange = ActiveWindow.Selection
Dim tableState As String
tableState = getMarkdownTable(selectRange)
With New DataObject
.SetText tableState
.PutInClipboard
End With
MsgBox "作成した文字列をクリップボードに出力しました。"
End Sub
Function getMarkdownTable(selectRange As Range) As String
Dim ret As String
' ヘッダ部を読み込み
ret = readRow(selectRange, 1) & vbCrLf
' センタリング設定
Dim i As Integer
Dim centerling As String
centerling = PIPE_STR
For i = 1 To selectRange.Columns.Count
centerling = centerling & COLUM_CENTERLING_STR & PIPE_STR
Next i
ret = ret & centerling & vbCrLf
' ボディ部を読み込み
For i = 2 To selectRange.rows.Count
ret = ret & readRow(selectRange, i) & vbCrLf
Next i
getMarkdownTable = ret
End Function
Function readRow(selectRange As Range, rowCnt As Integer) As String
Dim ret As String
ret = PIPE_STR
' 1行読み込む
Dim i As Integer
Dim value As String
For i = 1 To selectRange.Columns.Count
value = selectRange.Cells(rowCnt, i)
' カラム内改行を置換
value = Replace(value, vbLf, INNER_COLUMN_LINE_BREAK)
ret = ret & value & PIPE_STR
Next i
readRow = ret
End Function
Author And Source
この問題について(エクセルの表をMarkdown形式に変換する), 我々は、より多くの情報をここで見つけました https://qiita.com/kaneuchi_0202/items/fe3fb4a22e2c8db7c445著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .