Excel VBA | 自動生成ツール(UI オートデザイナー)

Excel VBA VBA
スポンサーリンク

以下に 「UI 自動生成ツール(リボン連携版)」 を、実務でそのまま使える形でまとめます。
内容は以下の 3 点で構成されています。


構成

  1. リボン XML(customUI.xml)テンプレート
  2. リボン → VBA コールバックの接続コード(Ribbon コールバックモジュール)
  3. UI 自動生成ツール本体(前回の “コード自動注入版” と統合可能)

前提

  • Excel を .xlsm / .xlsb 形式で保存
  • 「ファイル → オプション → セキュリティセンター → VBA プロジェクト オブジェクトモデルへのアクセスを信頼する」を有効化
  • Office Custom UI Editor(または Office RibbonX Editor)を使用してリボン XML を挿入します

① リボン XML(customUI.xml)

最小構成の 「UI 自動生成」タブ を作成し、
その中に「UI 選択ドロップダウン」と「生成ボタン」を配置したテンプレートです。

customUI.xml(コピーしてそのまま使える)

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon>
    <tabs>
      <tab id="tabUIBuilder" label="UI 自動生成">
        <group id="grpUI" label="UI 作成ツール">
          
          <dropDown id="ddlUIType" label="UI タイプ" getSelectedItemIndex="OnGetIndex" onAction="OnUISelect">
            <item id="ui1" label="カレンダー入力" />
            <item id="ui2" label="日付範囲ピッカー" />
            <item id="ui3" label="プログレスバー" />
            <item id="ui4" label="検索ダイアログ" />
            <item id="ui5" label="ログイン画面" />
            <item id="ui6" label="一覧 → 詳細画面" />
            <item id="ui7" label="行編集フォーム(Add / Edit / Delete)" />
            <item id="ui8" label="ドロップダウンつき一覧 UI" />
            <item id="ui9" label="高機能検索フォーム(AND/OR)" />
          </dropDown>

          <button id="btnBuild" label="生成する" size="large"
                  onAction="OnBuildButtonClicked"
                  imageMso="HappyFace" />

        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
VB

② リボン → VBA コールバック 接続コード

標準モジュールに下記を作成します。

Module: modRibbonCallback

Option Explicit

Public SelectedIndex As Long

' Ribbon ドロップダウンの初期位置
Public Sub OnGetIndex(control As IRibbonControl, ByRef index)
    index = SelectedIndex
End Sub

' リボンで UI 種類を選択時
Public Sub OnUISelect(control As IRibbonControl, id As String, index As Integer)
    SelectedIndex = index
End Sub

' 「生成」ボタンクリック
Public Sub OnBuildButtonClicked(control As IRibbonControl)
    Dim uiType As String
    
    Select Case SelectedIndex
        Case 0: uiType = "カレンダー入力"
        Case 1: uiType = "日付範囲ピッカー"
        Case 2: uiType = "プログレスバー"
        Case 3: uiType = "検索ダイアログ"
        Case 4: uiType = "ログイン画面"
        Case 5: uiType = "一覧 → 詳細画面"
        Case 6: uiType = "行編集フォーム(Add/Edit/Delete)"
        Case 7: uiType = "ドロップダウンつき一覧 UI"
        Case 8: uiType = "高機能検索フォーム(AND/OR)"
        Case Else
            MsgBox "UI タイプが選択されていません", vbExclamation
            Exit Sub
    End Select

    ' 呼び出し(自動生成ツール本体)
    Call BuildUI_WithCode(uiType)

End Sub
VB

③ UI 自動生成ツール本体(前回コードと完全互換)

あなたが前回組み立てた
「コード自動注入版(CreateNewForm / AddControlToForm / InjectFormCode / BuildUI_WithCode …)」
そのまま利用できます。

リボンのボタンで呼び出されるのは以下の一行だけです。

Call BuildUI_WithCode(uiType)
VB

そのため、ユーザーは:

Excel 上のリボン

  • タブ「UI 自動生成」を開く
  • ドロップダウンで UI タイプを選択
  • 「生成する」ボタンをクリック

👉 自動で UserForm が生成され、コードも自動注入される


補足:より実務的に使うには

必要であれば下記追加が可能です。

  • 最近使った UI タイプを記憶
  • リボン側で「生成されたフォームを開く」ボタン追加
  • リボン上で「テンプレート保存/読み込み」
  • コントロールのフォント・配色のテーマ化
  • 生成済み UI の自動整列ツール
  • CRUD(行編集)UI のデータ保存先を選択可能にする

いずれも拡張可能です。

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