LoginSignup
3
3

More than 5 years have passed since last update.

LibreOffice Calc の表をRedmine wiki記法(Textile記法) に変換するマクロ

Posted at

Redmine に表を書きたい

 Redmine では wiki記法(Textile記法)で、表を書くことができるが、そのもととなるデータはExcelやLibreOffice Calc 等の表計算ソフトで作成していると思う。(合計の計算や分析が楽だし)

 出来上がった表データを wiki記法に変換するのが手作業では面倒だし、転記ミスも出そうなので、マクロを書いた。 結合したセルや、セル内に改行があるもの、色付けなどには未対応ですが、そこそこ楽にはなりそうなので、公開します。

使い方

 マクロのソースをマイマクロのStandard、Module1などに書いておき、変換したいセル範囲を選択してからマクロを実行させてください。

 マクロは選択範囲から右に2つめの列に一行ずつ変換後の文字列を書き込みます。
マクロが終了したら、出力された文字列を選択、コピー&ペーストで wiki に書き込み、適当に補正してください。

MarkDown にするには

 wiki(Textile) じゃなく、Markdown にしたい場合は、ソースのアラインメントに関する部分(>. <.)と、ヘッダーに関する接頭文字(_.)を付けないように修正して、出力された文字列にアラインメント行を追加するなどしてください。

マクロのソース(BASIC)

calc2redmine.bas
REM  *****  BASIC  *****

Sub Main
    Dim First As Boolean
    Dim str1 As String
    Dim oCtrl As Object
    DIm oSheet As Object
    Dim rangeAdd As Object
    Dim Row, sRow, eRow, Col, sCol, eCol, oCell, oCall2 As Object

    oCtrl = ThisComponent.CurrentController
    oSheet = oCtrl.ActiveSheet
    rangeAdd = ThisComponent.CurrentSelection.RangeAddress
    sRow = rangeAdd.StartRow
    eRow = rangeAdd.EndRow
    sCol = rangeAdd.StartColumn
    eCol = rangeAdd.EndColumn

    First = True
    For Row = sRow To eRow
        str1 = ""
        For Col = sCol To eCol
            oCell = oSheet.getCellByPosition(Col, Row)
            If First Then '1行目はタイトルとする(太字で中央寄せ)
                str1 = str1 & "|_. " & oCell.String
            Else
                Select Case oCell.Type  '数値だったら右寄せとする
                Case 1
                    str1 = str1 & "|>. " & oCell.String
                Case Else
                    str1 = str1 & "|<. " & oCell.String
                End Select
            End If
        Next
        First = False
        str1 = str1 & "|"
        oCell2 = oSheet.getCellByPosition(Col+1, Row)
        oCell2.String = str1
    Next

End Sub
3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3