- ベストアンサー
【VBA】Excel2003のlistviewを任意の端末で利用可能にする方法
- Excel2003を利用している際、listview(リストボックスの一種)を利用する際には各端末に必ず「Microsoft ListView Control 6.0(SP4)」というコントロールを追加する必要があります。しかし、このlistviewが使われているファイルを開くたびにコントロールを追加するのは手間です。そこで、WorkbookのOpenメソッドに特定の記述を行うことで、ファイルを開くと自動的に「Microsoft ListView Control 6.0(SP4)」が追加されるようにする方法があります。
- 具体的な記述方法ですが、VBAの「Workbook_Open」イベントに以下のコードを追加します。
- ``` Private Sub Workbook_Open() Application.VBE.ActiveVBProject.References.AddFromGuid _ GUID:="{BDD1F049-858B-11D1-B16A-00C0F0283628}", Major:=1, Minor:=0 End Sub ```
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
質問およびNo1のお礼を要約すると、ListView Controlを使用しマクロを組み込んだExcelのファイルがあり、そのファイルをどのPCでもListViewが機能する状態で開きたい。 と、いうことですね。 回答はNo1に書いた通りです。 mscomctl.ocxが存在しレジストリに正しく登録されていればListViewを使用したファイル(.xls)を開いただけで自動的に処理されます。手動で追加する必要はありません! 開いた時点でアタッチされるのかマクロやVBEを動かした時点なのかは知りません、とにかく自動でやってくれます。
その他の回答 (1)
- uruz
- ベストアンサー率49% (417/840)
>WorkbookのOpenメソッドに何らかの記述をしてやればよいと考えていますが、 何かを記述すれば使えるようになるものではありません。 Microsoft ListView Control 6.0はVB6のActiveXのコントロールでMSCOMCTL.OCXというファイルに収納されています。 ListViewコントロールを使用するためにはMSCOMCTL.OCXが存在しレジストリに登録されている必要があります。 何を記述してもMSCOMCTL.OCXファイルが湧いてくることはありませんから。 ちなみに最終バージョンは(SP6)です。 可動しているPCのMSCOMCTL.OCXを可動させたいPCにコピーしコマンドプロンプトで >regsvr32 MSCOMCTL.OCX を実行してレジストリに登録します。
お礼
回答ありがとうございます。もしかしたら、私の説明不足があるかもしれませんので、一点補足させてください。 今会社にいないので、確認賀できず間違っているかも知れませんが、 その、MSCOMCTL.OCX というのは、すでに登録されている状態だけれども、VBEの設定でコントロールを、追加する手間を省いてやりたい。 といった、目的の質問になるとおもわれます。 もし、この質問が正しいかどうかわかりませんが再度アドバイス頂ければ幸いです。
お礼
ご丁寧に、説明頂きありがとうございました。 頂いた情報を参考にして、色々やってみた結果、本日無事に解決いたしました。 本当にありがとうございました。