Excel VBAとGithub
Excel VBAのコードはxlsmファイルの形式ではバイナリ形式で認識されるため、直接Githubで管理できない。
今回はxlsmからコードを分離しbasファイルなどのモジュールにエクスポートすることで、Github管理する方法を紹介する。
まずはxlsmファイルからコードを分離する必要がある。
手動でもVBAのコード編集画面のファイルメニューやプロジェクトエクスプローラーから、モジュールのインポート・エクスポートは可能である。同じことをVBAでも実現できる。
- インポート
FilePathにインポートしたいファイルパスを指定する。
Private Function Import_Module() Const FilePath As String = "example.bas" ThisWorkbook.VBProject.VBComponents.Import FilePath End Function
- エクスポート
ModuleNameにエクスポートしたいモジュール名を指定する。
Private Function Export_Module() Const ModuleName as String = "Module1" Dim objVBC As Object 'VBComponent Set objVBC = ThisWorkbook.VBProject.VBComponents(ModuleName) ThisWorkbook.VBProject.VBComponents.Remove objVBC End Function
ここまでのコードで、xlsmファイルからコードを分離・取り込みすることが可能となる。
ここからはGithubに関連するコードを説明する。
以下はstrCMD()にシェルコマンドをセットし、ExecuteCMD()で実行するプログラムである。
ExecuteCMD()のCurrentDirectoryは、.gitフォルダと同じディレクトリにする必要がある。
Private Function gitPullAddCommitPush() Dim strCMD As String strCMD = "git pull" ExecuteCMD(strCMD) strCMD = "git add ." ExecuteCMD(strCMD) strCMD = "git commit -m revise" ExecuteCMD(strCMD) strCMD = "git push origin master" ExecuteCMD(strCMD) End Function Public Function ExecuteCMD(strCMD As String) 'CMDにコマンドを投げる Dim buf As String With CreateObject("Wscript.Shell") .CurrentDirectory = ThisWorkbook.Path buf = .Run(strCMD, WaitOnReturn:=True) End With End Function
Export_Module()でモジュールを分離した後、gitPullAddCommitPush()を実行すれば、basファイルなどの形でコードをGithubで管理できる。