Excel や Word 、 PowerPoint などの Office 製品を Git 管理する


はじめに

社内でどうしても Office 製品のファイルを扱わないといけないとき、これを Git で変更管理できないだろうか?

というわけで、やってみました

方針

どちらがよいか

  • Office ファイルから必要な物をテキストでエクスポートして管理する
  • バイナリのまま管理して、差分をツールで表示できるようにする

やはりバイナリはリポジトリーに入れたくないので、できれば前者が良いが、、、

毎回エクスポートする手間、もしくはエクスポートを pre-commit で自動化するための環境作り(を他人が実行できるようにすること)が大変そう

前者のためのツールを試してみましたが、長い期間更新されていないし、あまり使いやすくはない

必ずしもすべての情報がエクスポートできるわけでもなさそう

ということで、今回は後者、差分をツールで表示する方針にしました

差分抽出ツール

今回は2種類のツールを利用しました

  • マクロ中心のもの: git-xl

    • xlsm
    • xltm
    • xla
    • xlam
  • マクロがないもの: tika

    • xls
    • xlsx
    • xlt
    • xltx
    • xlsb
    • doc
    • docx
    • ppt
    • pptx

マクロ付 Word や マクロ付 PowerPoint は使うことがないので入れていません

Access 等々はとりあえずどこかに置いておきます(私のローカル環境に入っていないので)

git-xl はマクロの差分を出してくれます

$ git diff
diff --xl a/examle_vba.xlsm b/examle_vba.xlsm
--- a/examle_vba.xlsm/VBA/Sheet1
+++ b/examle_vba.xlsm/VBA/Sheet1
@@ -1,7 +1,7 @@

 Public Sub Test()

-    MsgBox ("Good!!! Morning!!")
+    MsgBox ("Hellooooooooo!!")

 End Sub

tika は Excel や Word のテキスト差分をだしてくれます

$ git diff
diff --git a/example.xlsx b/example.xlsx
index 2d7a6a2..c660a22 100644
--- a/example.xlsx
+++ b/example.xlsx
@@ -1,7 +1,7 @@
 Sheet1
                表1 ヒョウ
                No.     行程 コウテイ   期限 キゲン     金額 キンガク
-               1       定義 テイギ     44337   ¥110,000
+               1       定義 テイギ     44337   ¥150,000
                2       詳細 ショウサイ 44346   ¥310,000
                3       実装 ジッソウ   44358   ¥520,000
                4       検証 ケンショウ 44368   ¥360,000
@@ -11,7 +11,7 @@ Sheet1

 こんにちは

6       7       110000  310000  520000  360000  60000   0       0
6       7       150000  310000  520000  360000  60000   0       0

VSCode でも表示してくれましたが、、、

なぜかステージしていないとダメ

Git History で過去の差分を見るのはOK

でも、Git Graph では表示してくれない、、、

もしかしたら設定が不足しているのかもしれませんが、、、

TortoiseGit

以下の記事で TortoiseGit で差分抽出している例がありました

素晴らしいですね

Excel の場合

Word の場合

Power Point の場合

ただ、これだけだとマクロの差分が見えません

マクロの差分を見る場合は Unified 形式で変更を表示 すれば git diff と同じに出してくれるかな、と思いましたが、、、

未コミットの差分だと

過去の差分だと

なぜか未コミットの場合にしか差分が表示されず

まとめ

  • Windows で Office ファイルを管理するなら、 TortoiseGit が良い
  • Excel でマクロが主体なら git-xl を使うのが良い

ただし、画像を大量に貼り付けていたりする化け物 Excel の場合、どうしてもファイルサイズが大きくなるため、やはり Git に入れるべきではありません

結局、どうしても Office でないとダメで、かつファイルサイズが大きいようなものは Git 外で管理するしかないかなあ、、、

日本全体でテキストベースの資料作成を徹底してくれれば、極悪方眼紙Excelやガタガタ整形Wordの量産が止まるのに、、、

Markdown でのドキュメント作成を推進していきましょう!