PR

Access VBA逆引き集|設定テーブルで実現する「ノーコード運用」実践テクニックとCopilot活用術

Access学習

Accessシステムを長年運用していると、次のような要望が頻繁に発生します。

  • 保存先フォルダを変更したい
  • メール送信先を変更したい
  • CSV取込先を変更したい
  • 集計対象期間を変更したい
  • 利用部門ごとに設定を変えたい

そのたびにVBAを修正していると、保守作業が増え、誤修正のリスクも高くなります。

結論から言うと、これらの設定をテーブル化することで、利用者自身が設定を変更できる「ノーコード運用」に近い仕組みを実現できます。

近年はCopilotによる開発効率向上が注目されていますが、実は運用段階で最も効果が高い改善の一つが「設定テーブル化」です。Copilotでコードを作るだけでなく、保守しやすいシステム設計を行うことが重要です。


スポンサーリンク

はじめに

Accessシステムでよく見かけるコードがあります。

strFolder = "C:\Import"

strMail = "sample@example.com"

strPath = "\Server\Data"

開発時は問題ありません。

しかし運用開始後には、

フォルダ変更

サーバ移行

メールアドレス変更

が発生します。

そのたびにVBA修正を行うと保守コストが増加します。


設定テーブルとは

設定情報をテーブルで管理する仕組みです。

例えば次のような構成です。

T_SYSTEM_CONFIG

設定名設定値
IMPORT_FOLDERC:\Import
BACKUP_FOLDERD:\Backup
MAIL_TOsample@example.com

VBAはテーブルから値を取得します。


設定テーブル化のメリット

VBA修正不要

利用者が値を変更できます。

保守性向上

ソース修正を減らせます。

障害リスク低減

プログラム改修ミスを防げます。

運用担当者でも変更可能

システム担当以外でも設定変更できます。


逆引き① 設定値を取得したい

もっとも基本的な方法です。

Dim strFolder As String

strFolder = _

DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='IMPORT_FOLDER'")

これだけで取得できます。


逆引き② 設定値が存在するか確認したい

事前チェックを行います。

If IsNull( _

DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='MAIL_TO'")) Then

MsgBox "設定がありません"

End If

運用トラブル防止になります。


逆引き③ フォルダ設定を管理したい

CSV取込でよく利用します。

テーブル

設定名設定値
CSV_FOLDERC:\Import

取得

strFolder = DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='CSV_FOLDER'")

柔軟な運用が可能になります。


逆引き④ メール送信先を管理したい

Outlook送信と組み合わせます。

strMail = DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='MAIL_TO'")

送信先変更時に改修が不要です。


逆引き⑤ PDF保存先を管理したい

帳票システムで便利です。

strPDFFolder = DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='PDF_FOLDER'")

運用環境ごとに変更できます。


逆引き⑥ バックアップ保存期間を管理したい

数値管理も可能です。

テーブル

設定名設定値
BACKUP_DAYS30

取得

Dim lngDays As Long

lngDays = CLng( _

DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='BACKUP_DAYS'"))

実践例① CSV取込システム

従来

“C:\Import”

固定指定。

改善後

strFolder = _

GetConfig("CSV_FOLDER")

フォルダ変更時の修正不要。


実践例② メール自動送信

従来

.To = “manager@sample.co.jp

改善後

.To = _

GetConfig(“MAIL_TO”)

担当者変更に強くなります。


実践例③ PDF出力

従来

“C:\PDF”

改善後

GetConfig(“PDF_FOLDER”)

サーバ移行時にも対応しやすくなります。


共通関数を作る

実務では関数化がおすすめです。

Public Function _

GetConfig( _

ByVal ConfigName As String) _

As String

GetConfig = Nz( _

DLookup( _

"設定値", _

"T_SYSTEM_CONFIG", _

"設定名='" & _

ConfigName & "'"), _

"")

End Function

利用例

strFolder = _

GetConfig("CSV_FOLDER")

非常に見やすくなります。


設定変更履歴を管理する

重要システムでは履歴管理も行います。

T_CONFIG_LOG

項目
変更日時
設定名
変更前
変更後
更新者

運用監査で役立ちます。


実務活用例① 部門ごとに設定を変更

例えば、

横浜事業所

大阪事業所

東京事業所

で保存先を分けられます。


実務活用例② 本番・テスト環境切替

設定テーブルだけ変更します。

TEST

PRODUCTION

を簡単に切替可能です。


実務活用例③ API連携

APIアドレス管理にも利用できます。

API_URL

を設定値として保持します。

将来のシステム変更に対応しやすくなります。


Copilot活用術① 設定管理機能作成

次のように依頼します。

Access VBAで

設定テーブル管理機能を

作成してください。

条件

・DLookup利用

・共通関数化

・エラー処理あり

実践的なコードを生成できます。


Copilot活用術② 設計レビュー

設定管理機能を作成した後、

保守性の観点で

改善案を教えてください

と依頼します。

設計上の改善点を発見できます。


Copilot活用術③ テーブル設計支援

例えば、

Accessシステムの

設定管理テーブルを

設計してください。

と依頼します。

実装前の検討材料として有効です。


よくある失敗例

ハードコーディング

“C:\Data”

を直接記載する。


設定値の重複

同じ意味の設定を複数登録する。


マスタ未整備

設定命名規則を決めていない。


更新履歴なし

誰が変更したか分からなくなる。


エラー処理も実装する

設定取得時のエラーに備えます。

On Error GoTo ErrHandler

strPath = _

GetConfig("CSV_FOLDER")

Exit Sub

ErrHandler:

MsgBox Err.Description

長期運用では重要です。


AI時代でも重要な設計力

生成AIによって、

  • VBAコード作成
  • SQL作成
  • エラー解析

は効率化できます。

しかし、

保守しやすい設計

変更に強い設計

運用しやすい設計

は依然として重要です。

Copilot時代だからこそ、設定テーブル化のような保守設計が大きな価値を持ちます。


まとめ

設定テーブルは派手な機能ではありません。

しかし実際の運用では、

  • フォルダ変更
  • メール変更
  • サーバ移行
  • 保存先変更

などが頻繁に発生します。

その際に設定テーブル化されているシステムは圧倒的に保守が容易です。

さらにCopilotを活用することで、

  • 設計支援
  • VBA作成
  • エラー解析
  • 改善提案

を効率的に行えます。

Accessシステムを長期運用する予定がある場合は、ぜひ早い段階で設定テーブル化を導入してみてください。

コメント

タイトルとURLをコピーしました