はじめに
社内でどうしても Office 製品のファイルを扱わないといけないとき、これを Git で変更管理できないだろうか?
というわけで、やってみました
方針
どちらがよいか
- Office ファイルから必要な物をテキストでエクスポートして管理する
- バイナリのまま管理して、差分をツールで表示できるようにする
やはりバイナリはリポジトリーに入れたくないので、できれば前者が良いが、、、
毎回エクスポートする手間、もしくはエクスポートを pre-commit で自動化するための環境作り(を他人が実行できるようにすること)が大変そう
前者のためのツールを試してみましたが、長い期間更新されていないし、あまり使いやすくはない
必ずしもすべての情報がエクスポートできるわけでもなさそう
ということで、今回は後者、差分をツールで表示する方針にしました
差分抽出ツール
今回は2種類のツールを利用しました
マクロ付 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 でのドキュメント作成を推進していきましょう!