1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

スクリプトを構成管理したいのならExcel VBAを選ぶべきではないかもしれませんが、
そんな、ちょっとお世話しづらいExcel VBAを、
バッチとSVNで履歴をみられるようにした記事です。

この記事について

想定読者
Excel VBAでどこを直してきたか忘れてしまう方
記事のゴール
Excel VBAのスクリプトの修正履歴がわかるようになる

本文

全体像

作成する流れはこんな感じ

  1. Excel VBAのスクリプトを出力するバッチを用意します
  2. SVNのリポジトリを用意し、バッチとともに配置します
  3. Excel VBAを所定のフォルダに集めます
  4. バッチを実行
  5. SVNで確認

作業環境

環境
OS: Windows 10 Pro
Office 2019

実施内容

1. Excel VBAのスクリプトを出力するバッチを用意します

第一引数のマクロ付きExcelファイル内のスクリプトを、第二引数のフォルダに書き出すバッチ

ExportVBA.vbs
'Excelを起動
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False

'Excelファイルを開く
Set objWorkbook = objExcel.Workbooks.Open(WScript.Arguments(0))

'VBProject内の各ファイルを取得
For Each objVBComponent in objWorkbook.VBProject.VBComponents
    'ファイル名を取得
    strFileName = objVBComponent.Name
    '拡張子決定
    strExtension = ".cls"
    If Left(objVBComponent.Name, 3) = "mod" Then
        strExtension = ".bas"
    End If
    'ファイルの内容を取得
    If objVBComponent.CodeModule.CountOfLines > 0 Then
        strFileContent = objVBComponent.CodeModule.Lines(1, objVBComponent.CodeModule.CountOfLines)
        'テキストファイルに出力
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.CreateTextFile(WScript.Arguments(1) & strFileName & strExtension, True)
        objFile.Write(strFileContent)
        objFile.Close
    End If
Next

'Excelファイルを閉じる
objWorkbook.Close False
Set objWorkbook = Nothing
'Excelを終了する
objExcel.Quit
Set objExcel = Nothing

Excelフォルダに格納したマクロ付きExcelファイルを読み取り、
VBAフォルダに書き出すバッチファイル

ExportVBA.bat
@ECHO OFF
REM バッチ実行フォルダへ移動
CD /D %~dp0
REM 文字コードをUTF-8に設定
CHCP 65001
REM Excelフォルダ内の全ファイルと同じ名前のフォルダをVBAフォルダ配下に作成
FOR %%f IN (.\Excel\*.xlsm) DO IF NOT EXIST ".\VBA\%%~nf\" MKDIR ".\VBA\%%~nf\"
REM Excelフォルダ内の全ファイルに対してVBAスクリプトをエクスポート
FOR %%f IN (.\Excel\*.xlsm) DO CScript ExportVBA.vbs %~dp0"%%f" ".\VBA\%%~nf\"

2. SVNのリポジトリを用意し、バッチとともに配置します

SVN管理フォルダを作成し、その中に以下のように資産を配置

image.png

3. Excel VBAを所定のフォルダに集めます

Excelフォルダ内に対象となるマクロ付きExcelファイルを以下のように配置

image.png

4. バッチを実行

ExportVBA.bat をダブルクリック

image.png

実行後のVBAフォルダの状態

VBAフォルダの状態

5. SVNで確認

テキストなので、コミット前にプログラムの修正状況がわかります

image.png

以上。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?