• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】の記述でお助けください。)

【VBA】Excel2003のlistviewを任意の端末で利用可能にする方法

このQ&Aのポイント
  • 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 ```

質問者が選んだベストアンサー

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

質問およびNo1のお礼を要約すると、ListView Controlを使用しマクロを組み込んだExcelのファイルがあり、そのファイルをどのPCでもListViewが機能する状態で開きたい。 と、いうことですね。 回答はNo1に書いた通りです。 mscomctl.ocxが存在しレジストリに正しく登録されていればListViewを使用したファイル(.xls)を開いただけで自動的に処理されます。手動で追加する必要はありません! 開いた時点でアタッチされるのかマクロやVBEを動かした時点なのかは知りません、とにかく自動でやってくれます。

puyopa
質問者

お礼

ご丁寧に、説明頂きありがとうございました。 頂いた情報を参考にして、色々やってみた結果、本日無事に解決いたしました。 本当にありがとうございました。

その他の回答 (1)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.1

>WorkbookのOpenメソッドに何らかの記述をしてやればよいと考えていますが、 何かを記述すれば使えるようになるものではありません。 Microsoft ListView Control 6.0はVB6のActiveXのコントロールでMSCOMCTL.OCXというファイルに収納されています。 ListViewコントロールを使用するためにはMSCOMCTL.OCXが存在しレジストリに登録されている必要があります。 何を記述してもMSCOMCTL.OCXファイルが湧いてくることはありませんから。 ちなみに最終バージョンは(SP6)です。 可動しているPCのMSCOMCTL.OCXを可動させたいPCにコピーしコマンドプロンプトで >regsvr32 MSCOMCTL.OCX を実行してレジストリに登録します。

puyopa
質問者

お礼

回答ありがとうございます。もしかしたら、私の説明不足があるかもしれませんので、一点補足させてください。 今会社にいないので、確認賀できず間違っているかも知れませんが、 その、MSCOMCTL.OCX というのは、すでに登録されている状態だけれども、VBEの設定でコントロールを、追加する手間を省いてやりたい。 といった、目的の質問になるとおもわれます。 もし、この質問が正しいかどうかわかりませんが再度アドバイス頂ければ幸いです。

関連するQ&A