LoginSignup
28
35

More than 1 year has passed since last update.

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

Last updated at Posted at 2021-06-22

はじめに

社内でどうしても 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-diff-vscode.png

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

git-diff-vscode-not-staged.png

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

git-history-diff-vscode.png

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

git-graph.jpg

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

TortoiseGit

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

素晴らしいですね

Excel の場合

tortoise-git-excel.png

Word の場合

tortoise-git-word.png

Power Point の場合

tortoise-git-ppt.png

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

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

unified.png

未コミットの差分だと

tortoise-git-unified.png

過去の差分だと

tortoise-git-unified.png

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

まとめ

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

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

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

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

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

28
35
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
28
35