更新日付

最新投稿:宇部神社(鳥取)
投稿日:2024年9月24日
既存投稿更新:吉備津彦神社
更新日:2024年6月13日

2011年10月8日土曜日

MS-ACCESSのソース管理

それほど大きくないシステムでMS-ACCESSを利用して構築する案件は
予想外に多かったりする。
(オイラのまわりだけかもw)

で、単独での開発なら良いけど複数人での開発となると
ちょっと厄介。
どうしてもデグレが発生しやすい。

VBAのソースだけなら良いけど、フォーム等のプロパティもあるし。

ただ、各オブジェクトをテキストとして出力もできるんだよね。
ヘルプ等では公開されてないようだけど。
SaveAsText ってやつね。

で以下のモジュールをつくってみた。
'-----------------------------------------------
'モジュール一括出力
'-----------------------------------------------
Public Sub Addin_subOutModule(strFolder As String)
    Dim aObj As Object
    Dim FName As String
    On Error GoTo Err_Addin_subOutModule
    '全モジュール出力
    For Each aObj In CurrentProject.AllModules
        FName = strFolder & "module_" & aObj.Name & ".txt"
        Application.SaveAsText acModule, aObj.Name, FName
    Next
   
    '全フォーム出力
    For Each aObj In CurrentProject.AllForms
        FName = strFolder & "form_" & aObj.Name & ".txt"
        Application.SaveAsText acForm, aObj.Name, FName
    Next
   
    '全レポート出力
    For Each aObj In CurrentProject.AllReports
        FName = strFolder & "report_" & aObj.Name & ".txt"
        Application.SaveAsText acReport, aObj.Name, FName
    Next
   
    '全マクロ出力
    For Each aObj In CurrentProject.AllMacros
        FName = strFolder & "macro_" & aObj.Name & ".txt"
        Application.SaveAsText acMacro, aObj.Name, FName
    Next
   
    '全クエリ出力
    For Each aObj In CurrentData.AllQueries
        FName = strFolder & "querydef_" & aObj.Name & ".txt"
        Application.SaveAsText acQuery, aObj.Name, FName
    Next

    Set aObj = Nothing
   
    Exit Sub
   
Err_Addin_subOutModule:
   
    MsgBox Err.Description
    Resume Next
End Sub
-------------------------------------------
strFolder に出力先フォルダ名(最終文字に¥付き)を指定してコールするだけ。
ただオブジェクト名に"/"等があると駄目だけど^_^;

出力ファイルで差分を取れば変更箇所が判定できる。
(編集しなくても変わる項目もあるけど…)
以前アドインとして公開してるソースから引用してます。
VBAStepCounterForAccess2000 ってやつね(^^ゞ

ACCESS2000 ~ 2007までは出来るはず。2010は知らんw

0 件のコメント:

コメントを投稿