PR

Access VBA逆引き集|Copilotで作る「設定テーブル駆動型システム」実践テクニック

VBA

Accessシステムの保守で最も工数がかかるのは、仕様変更のたびにVBAソースを修正する作業です。設定テーブル駆動型の設計にすることで、プログラムを修正せずに運用ルールの変更へ対応しやすくなります。また、Copilotを活用することで設定テーブル設計やVBAコード作成も効率化できます。

当サイトでは動的SQL、メール送信、パフォーマンスログ、Excel加工、トランザクション処理などを紹介しています。今回は運用保守性向上に焦点を当てた「設定テーブル駆動型システム」を解説します。 [latest-inf…system.com], [latest-inf…system.com], [latest-inf…system.com], [latest-inf…system.com]

スポンサーリンク

なぜ設定テーブルが重要なのか

多くのAccessシステムでは以下のような値が頻繁に変更されます。

  • 保存先フォルダ
  • メール送信先
  • CSV取込先
  • 管理者情報
  • 閾値設定
  • 税率
  • 集計対象期間

初心者が作るシステムでは次のように直接記述しがちです。

strFolder = “C:\Import”

strMail = “admin@example.com

If Amount >= 100000 Then

この場合、変更のたびにVBA修正が必要になります。

運用開始後に保守負荷が急増する原因になります。

設定テーブル駆動型とは

設定内容をテーブルで管理する方法です。

T_SYSTEM_SETTING

設定キー設定値
IMPORT_FOLDERC:\Import
ADMIN_MAILadmin@example.com
LIMIT_AMOUNT100000

プログラムは設定値を参照して動作します。

設定テーブル

VBA取得

処理実行

という構成になります。

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

最も基本となる処理です。

Public Function GetSettingValue( _

ByVal KeyName As String) As String

GetSettingValue = Nz( _

DLookup( _

"設定値", _

"T_SYSTEM_SETTING", _

"設定キー='" & KeyName & "'"), _

"")

End Function

利用例です。

strFolder = _

GetSettingValue("IMPORT_FOLDER")

ハードコーディングを削減できます。

逆引き② 存在チェックをしたい

設定漏れ対策です。

If GetSettingValue( _

"ADMIN_MAIL") = "" Then

MsgBox _

"設定が見つかりません"

Exit Sub

End If

運用時のトラブルを防止できます。

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

閾値管理に利用します。

Dim lngLimit As Long

lngLimit = CLng( _

GetSettingValue( _

“LIMIT_AMOUNT”))

設定変更をテーブルのみで実施できます。

逆引き④ 日付設定を取得したい

定期処理で活用できます。

Dim dtTarget As Date

dtTarget = CDate( _

GetSettingValue( _

"TARGET_DATE"))

管理者が直接変更可能になります。

逆引き⑤ 設定値を更新したい

管理画面から変更する例です。

CurrentDb.Execute _

"UPDATE T_SYSTEM_SETTING " & _

"SET 設定値='200000' " & _

"WHERE 設定キー='LIMIT_AMOUNT'"

運用担当者自身で調整できます。

実践例① CSV取込システム

固定フォルダを設定テーブルへ移動します。

悪い例

DoCmd.TransferText _

acImportDelim, _

"", _

"T_DATA", _

"C:\Import\Data.csv"

良い例

strFolder = _

GetSettingValue( _

"IMPORT_FOLDER")

DoCmd.TransferText _

acImportDelim, _

"", _

"T_DATA", _

strFolder & "\Data.csv"

運用変更に柔軟に対応できます。

実践例② メール送信システム

送信先を変更できるようにします。

strMail = _

GetSettingValue( _

"ADMIN_MAIL")

テスト環境と本番環境で使い分けしやすくなります。 [latest-inf…system.com]

実践例③ PDF出力システム

保存先の変更を簡単にします。

PDF出力処理との相性も良好です。 [latest-inf…system.com]

strPdfFolder = _

GetSettingValue( _

"PDF_FOLDER")

設定分類を行う

実務では分類管理がおすすめです。

T_SYSTEM_SETTING

分類設定キー設定値
MAILADMIN_MAILxxx
PATHIMPORT_FOLDERxxx
PATHPDF_FOLDERxxx
SYSTEMLIMIT_AMOUNT100000

管理しやすくなります。

変更履歴を記録する

重要な設定はログを残します。

T_SETTING_LOG

項目内容
更新日時日時
設定キー対象
変更前旧値
変更後新値
更新者担当者

監査対応にも役立ちます。 [latest-inf…system.com]

Copilotで設定テーブルを設計する

Copilotへ次のように依頼します。

プロンプト例

Accessシステムで利用する

設定テーブル設計を作成してください。

条件

・メール設定

・フォルダ設定

・運用パラメータ

・変更履歴管理

テーブル設計案を短時間で作成できます。

Copilot活用術① 共通関数作成

Access VBAで

設定テーブルから値を取得する

共通関数を作成してください。

再利用可能なコードを生成できます。

Copilot活用術② 設計レビュー

設定テーブル設計の

問題点をレビューしてください

設定の不足や改善案を得られます。

Copilot活用術③ 環境切替設計

開発環境

検証環境

本番環境

を切り替える方法を

提案してください

保守性向上につながります。

設定テーブル導入時の注意点

設定キーを統一する

良い例

IMPORT_FOLDER

PDF_FOLDER

ADMIN_MAIL

命名規則を決めましょう。

必須設定をチェックする

起動時に確認します。

アクセス権を管理する

誰でも変更できないようにします。

バックアップを取得する

設定テーブルも重要な資産です。

実務で効果の高い活用例

顧客管理システム

  • 通知先変更
  • 表示件数変更
  • 保管期間変更

品質管理システム

  • 判定基準
  • 保存先
  • 出力先

施設の管理業務データベース

  • 点検期限
  • 出力ルール
  • 承認フロー条件

などの変更管理に活用できます。

AccessとCopilotの組み合わせが有効な理由

Accessは業務データ管理や設定管理に強みがあります。

一方Copilotは、

  • テーブル設計
  • VBA生成
  • SQL作成
  • コードレビュー
  • 保守改善提案

を支援できます。 [latest-inf…system.com], [latest-inf…system.com]

設定テーブル駆動型へ移行する際にも非常に有効です。

まとめ

設定値をソースコードへ直接記述すると、運用開始後の保守負荷が増大します。

設定テーブル駆動型システムへ移行することで、

  • 保守性向上
  • 運用効率向上
  • 障害リスク低減
  • リリース回数削減
  • 利用者満足度向上

を実現できます。

さらにCopilotを活用すれば、設定テーブル設計や共通関数作成、レビュー作業を効率化でき、長期間運用しやすいAccessシステムを構築できます。

Amazon.co.jp

コメント

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