Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした