ExcelVBAでクリップボード操作やDataObjectを使った処理を実装しようとした際、
「参照設定の一覧に Microsoft Forms 2.0 Object Library が見当たらない」
という状況に遭遇したことはありませんか。
ネットや書籍のコードをそのまま試そうとしても、
・参照設定に存在しない
・チェックできない
・そもそも表示されない
といった問題に直面し、処理が止まってしまうケースは非常に多いです。
特に社内PCや配布用マクロ、64bit環境ではこの問題が頻発します。
本記事では、なぜMicrosoft Forms 2.0 Object Libraryが表示されないのか、
どうすれば正しく対応できるのか、
さらに 参照設定に依存しない実務向け設計 まで含めて徹底解説します。
目次
- ✅ Microsoft Forms 2.0 Object Libraryとは何か
- ・VBA専用のライブラリではない
- ・DataObjectはFormsに含まれている
- ✅ 参照設定に表示されないのは異常なのか?
- ・Officeの構成によっては非表示
- ・64bit版Officeで発生しやすい
- ✅ よくある環境パターンと発生条件
- ・Office 64bit(特に企業PC)
- ・Officeの最小構成インストール
- ・配布用PC・VDI環境
- ✅ 無理に参照設定を追加しようとする危険性
- ・環境依存が強くなる
- ・管理者権限が必要な場合が多い
- ✅ 結論:参照設定に依存しない設計が正解
- ・CreateObjectを使う
- ・配布マクロでは必須の考え方
- ✅ CreateObjectを使った正しいDataObjectの利用方法
- ・Object型を使うのがポイント
- ✅ 参照設定あり/なしのコードの違い
- ・参照設定あり(非推奨)
- ・参照設定なし(推奨)
- ✅ 既存コードでエラーが出る場合の修正ポイント
- ・MSForms.DataObject が宣言されていないか
- ・Dim の型指定を修正する
- ✅ Microsoft Formsが完全に使えない環境はあるのか?
- ・DataObjectを使わない設計に切り替える
- ・ユーザー操作に委ねる判断
- ✅ 参照設定トラブルが起きやすい実務シーン
- ・社内配布用マクロ
- ・SES・客先常駐案件
- ・長期間運用されるツール
- ✅ 「動く環境で作る」から「動く設計で作る」へ
- ✅ エラーハンドリングと組み合わせた安全設計
- ✅ 実務でありがちな失敗とその回避策
- ✅ まとめ:Microsoft Forms 2.0 Object Libraryがない場合の正解
- Microsoft Forms 2.0 Object Libraryをどうしても使いたい場合
- 「Microsoft Forms 2.0 Object Library」で使用できるオブジェクトやコントロールとは
✅ Microsoft Forms 2.0 Object Libraryとは何か
このライブラリは、VBAで DataObject を利用する際によく登場します。
クリップボード操作、テキストの受け渡しなどで使われるため、
多くのサンプルコードで前提条件のように書かれています。
しかし実際には、このライブラリは「常に存在するもの」ではありません。
環境によっては最初から登録されていないこともあります。
まずは、このライブラリの正体を整理します。
・VBA専用のライブラリではない
Microsoft Forms は、元々ユーザーフォーム関連のコンポーネントです。
・DataObjectはFormsに含まれている
クリップボード操作のために利用されます。
✅ 参照設定に表示されないのは異常なのか?
結論から言うと、異常ではありません。
多くの解説では「参照設定にチェックを入れる」と書かれていますが、
それは「表示されている環境」の話です。
特定のOffice構成では、参照設定一覧に表示されないのが正常動作です。
ここを誤解すると、「環境がおかしい」「Officeが壊れている」と勘違いしてしまいます。
まずは、表示されない理由を冷静に整理しましょう。
・Officeの構成によっては非表示
特にClick-to-Run版で起こりやすいです。
・64bit版Officeで発生しやすい
32bit向けライブラリが前提になっている場合があります。
✅ よくある環境パターンと発生条件
Microsoft Forms 2.0 Object Libraryが見つからないケースには、
いくつかの典型的な環境パターンがあります。
自分の環境がどれに該当するかを把握することが、解決への第一歩です。
・Office 64bit(特に企業PC)
参照設定に表示されないことが多いです。
・Officeの最小構成インストール
不要なコンポーネントが省かれています。
・配布用PC・VDI環境
セキュリティ上の理由で制限されています。
✅ 無理に参照設定を追加しようとする危険性
「表示されないなら、手動で追加すればいい」と考える人もいますが、
この対応は 実務では推奨されません。
理由を理解せずにdll登録などを行うと、
・他のVBAが動かなくなる
・Office更新で再発する
といった問題を引き起こします。
ここでは、そのリスクを整理します。
・環境依存が強くなる
別PCで動かなくなる原因になります。
・管理者権限が必要な場合が多い
社内PCではほぼ不可能です。
✅ 結論:参照設定に依存しない設計が正解
実務で最も安定する答えは、
Microsoft Forms 2.0 Object Libraryに依存しない書き方をすることです。
これにより、参照設定が存在しない環境でも同じコードが動作します。
ここを理解していないと、
「自分のPCでは動くが、他人のPCでは動かない」
という典型的なVBAトラブルに陥ります。
・CreateObjectを使う
参照設定不要でDataObjectを扱えます。
・配布マクロでは必須の考え方
実務ではこちらが標準です。
✅ CreateObjectを使った正しいDataObjectの利用方法
以下が、参照設定に依存しない 安全な基本形 です。
Sub Sample_DataObject()
Dim objData As Object
Set objData = CreateObject("Forms.DataObject")
objData.SetText "test"
objData.PutInClipboard
End Sub
この書き方であれば、
参照設定一覧にMicrosoft Forms 2.0 Object Libraryが表示されていなくても動作します。
・Object型を使うのがポイント
型指定を避けることで環境差を吸収します。
参考:【VBA】クリップボードを操作する方法_値の追加と呼び出し
✅ 参照設定あり/なしのコードの違い
ここで、よくある2つの書き方を比較します。
・参照設定あり(非推奨)
Dim objData As New MSForms.DataObject
→ ライブラリが存在しないとコンパイルエラーになります。
参考:【VBA】クリップボードをクリアにする方法(DataObject)
・参照設定なし(推奨)
Dim objData As Object
Set objData = CreateObject("Forms.DataObject")
→ 環境差に強く、配布向きです。
✅ 既存コードでエラーが出る場合の修正ポイント
すでに動かないコードが存在する場合は、
以下の点を重点的にチェックしてください。
・MSForms.DataObject が宣言されていないか
ここが最も多い原因です。
・Dim の型指定を修正する
Object型へ変更します。
✅ Microsoft Formsが完全に使えない環境はあるのか?
ごく一部ですが、
Forms自体が利用できない特殊環境も存在します。
この場合でも、設計で回避することは可能です。
・DataObjectを使わない設計に切り替える
CopyModeなどの代替手段を検討します。
・ユーザー操作に委ねる判断
自動化しすぎない選択も重要です。
✅ 参照設定トラブルが起きやすい実務シーン
この問題は、以下のような場面で特に表面化します。
・社内配布用マクロ
全員の環境が違うためです。
・SES・客先常駐案件
PC環境を選べません。
・長期間運用されるツール
Office更新で再発します。
✅ 「動く環境で作る」から「動く設計で作る」へ
VBA初心者が陥りやすい罠は、
「今の自分のPCで動くこと」をゴールにしてしまう点です。
実務ではそれでは不十分です。
どの環境でも壊れにくい設計こそが重要になります。
参照設定問題は、その典型例です。
✅ エラーハンドリングと組み合わせた安全設計
DataObjectを使う場合も、
失敗する可能性を前提に設計することが重要です。
On Error Resume Next
Set objData = CreateObject("Forms.DataObject")
If Err.Number <> 0 Then
MsgBox "クリップボード機能が利用できません"
Exit Sub
End If
On Error GoTo 0
✅ 実務でありがちな失敗とその回避策
- 参照設定がある前提でコードを書く
- 他人の環境を想定していない
- ネットのコードをそのまま流用する
これらは、VBAに慣れてきた頃ほど起こりやすい失敗です。
✅ まとめ:Microsoft Forms 2.0 Object Libraryがない場合の正解
- 参照設定に表示されないのは異常ではない
- 無理に追加しようとするのは危険
- CreateObjectを使えば参照設定は不要
- Object型で宣言するのが実務の基本
- 環境依存しない設計が最重要
これらを理解しておけば、
参照設定トラブルでVBAが止まることはほぼなくなります。
配布用・業務用マクロを作成する際は、
ぜひこの考え方を標準にしてください。
Microsoft Forms 2.0 Object Libraryをどうしても使いたい場合
VBAのメニュー「ツール」>「参照設定」>「参照」をクリック
フォルダ画面が表示されます。
「FM20.DLL」をダブルクリックします。
「FM20JPN.DLL」では似ていますが別物になりますので気をつけてください。

「Microsoft Forms 2.0 Object Library」が一覧に表示されますので、チェックし「OK」をクリックします。
「Microsoft Forms 2.0 Object Library」で使用できるオブジェクトやコントロールとは
- CommandButton : クリック可能なボタン。
- TextBox : テキスト入力を受け付けるフィールド。
- ラベル: テキストラベル。
- コンボボックス: ドロップダウンリスト。
- ListBox : アイテムリスト。
- CheckBox : チェックボックス。
- オプションボタン:ラジオボタン。
- トグルボタン: トグルボタン。
- TabStrip : タブを持つコントロール。
- MultiPage : 複数のページを持つコントロール。
- ScrollBar : スクロールバー。
- SpinButton : スピンボタン(上下ボタン)。
- 画像: 画像を表示するコントロール。
- フレーム: 他のコントロールをグループ化するフレーム。
- タイマー: タイマーイベントを発生するコントロール。
- DataObject : クリップボード操作を簡単にするオブジェクト。