Excel64bit版ListView問題の結論が見えた日

今回は長く続けてきた

Excel VBA 64bit版でListViewを使う挑戦

に決着をつけようと思います。

ここまで私は、

・MSCOMCTL.OCXを入手
・SysWOW64へ配置
・regsvr32で登録
・Excel再起動
・追加コントロール確認
・32bit版Excelでの動作確認

など、できることを一通り試してきました。

そして今回、

会社のPCでは動くのに、自宅のPCでは動かない

という最大の謎に挑みます。

正直、もう何が正しいのかわからなくなっていました。

そこでCopilotに率直に聞いてみました。

Excel64bit版ListView問題の結論が見えた日

■■■スポンサーリンク■■■

【注意】64bit VBA問題 環境によって異なります

Microsoft365の64bitでは、2017年7月19日の更新プログラムで、mscomctl.ocx のサポートが追加されています。

2017 年の月次チャネル リリースのリリース ノート

Office スイート: セキュリティ以外の更新プログラム

  • mscomctl.ocx の 64 ビット サポートを追加します。これにより、Office の 64 ビット バージョンで作業しているユーザーがコモン コントロールの含まれるマクロ ファイルを作成、編集、また開くことができるようになります。
  • mscomctl.ocx で使用されているコントロールのアクセシビリティを向上させます。

バージョン 1706: 7 月 19 日

バージョン 1706 (ビルド 8229.2103)

今回はExcel2013という古いバージョンを未だに利用している、私個人の戦いのお話です。
会社のPCは、Microsoft365の64bitのExcelを使用しています。
でも、Copilotからは1706の更新プログラムの話は一切出てきませんでした・・・なぜ???

実際のCopilotとのやり取り

利用者 → Copilot

Excel VBA 64bitでListViewを使えるようにしたいです。

MSCOMCTL.OCX を C:\Windows\SysWOW64\MSCOMCTL.OCX に配置しました。
regsvr32 を使って ActiveX の登録も済みました。
Excel を再起動して、参照設定に Microsoft Windows Common Controls 6.0(SP6) が表示されるようになりました。

会社のPCではこの方法で64bit版ExcelでもListViewが使えています。
しかし自宅PCでは使えません。

なぜ使えるPCと使えないPCが混在するのでしょうか?

また会社のPCでは、MSCOMCTL.OCX の参照先が System32 と表示されています。
しかし実際にSystem32フォルダを見るとMSCOMCTL.OCXが存在しません。
なぜ存在しないのに参照できるのでしょうか?

初心者にもわかるように教えてください。

Copilot → 利用者

実はここが、Excel 64bit版でListViewが使える環境と使えない環境が混在する理由の核心部分です。

結論から説明すると、
会社のPCで動いているのは
64bit版Excelが正式にListViewをサポートしているからではありません。

過去にインストールされていた32bit版Officeや古いActiveXコンポーネントの登録情報が
残っていることによって、偶然動いている可能性が高いです。

つまり、
動いている環境が正しいのではなく、

たまたま動いている状態

である可能性があります。

なぜPCによって結果が違うのか

ListViewが含まれるMSCOMCTL.OCXは32bit用のActiveXコントロールです。

本来、

32bit ActiveX
     ↓
64bit Excel

という組み合わせはサポートされていません。

しかしPCによっては、

・過去に32bit Officeを使っていた
・過去にVB6アプリを使っていた
・過去のCOM登録情報が残っている

などの理由で、
TypeLib情報やCOM情報だけがレジストリに残っている場合があります。

その結果、
64bit版Excelでも見かけ上は利用できてしまうことがあります。

なぜSystem32に無いのに参照できるのか

ここはWindows特有の仕組みです。

実は System32 という名前ですが、
中身は64bit用のシステムファイルです。

一方で SysWOW64 という名前ですが、
こちらが32bit用のシステムファイルです。

名前が逆に見えるので非常に混乱しやすい部分です。

Windowsには 
WOW64リダイレクト 
という仕組みがあります。

そのため、画面上では
C:\Windows\System32
と表示されていても、

実際には
C:\Windows\SysWOW64
のファイルを読み込んでいることがあります。

つまり、表示されている場所と実際に読み込んでいる場所が違うことがあります。

なぜ会社のPCでは動いているのか

可能性として最も高いのは、
過去に32bit版Officeが導入されていたことです。

そのとき登録された

・MSCOMCTL.OCX
・TypeLib
・COM情報

が残っているため、

本来なら動作しないはずのListViewが動いているように見えます。

ただしこれは正式サポートではありません。
WindowsアップデートやOfficeアップデートによって突然動かなくなる可能性があります。
そのため実務で長期間利用する仕組みとしては推奨されません。

今回の回答でわかったこと

ここまで来て、ようやく状況が見えてきました。

正直なところ、私は

  • 設定が足りないのでは?
  • 登録方法が違うのでは?
  • どこかに見落としがあるのでは?

と思っていました。

でも違いました。

設定不足ではなく、そもそも環境依存だったのです。

まとめ

今回の調査で、Excel2013 64bitのListViewにあきらめがつきました。

しかし私が使用しているExcelのバージョンを伝えなかったのも悪いですが、CopilotからMicrosoft 更新プログラム バージョン 1706の話が一切出てこなかったのは疑問です・・・。

■■■スポンサーリンク■■■

リンク

ChatGPTでExcel VBAマクロを自動生成してみた|初心者でも使える実践手順
Excel VBAのエラー修正をChatGPTに頼んだら原因が一発で分かった話
仕様が曖昧でもOK?ChatGPTにExcel VBAを作らせてみた結果
ChatGPTに作らせたExcel VBAコードは安全?使う前に確認すべきポイント
Excel VBA初心者がChatGPTを使うと挫折しにくくなる理由
CopilotでExcel作業はどこまで効率化できる?実務で使ってみた結果
Copilotに仕事を任せてみた|メール・資料作成はここまで楽になる
Copilotが向いている人・向いていない人を実体験から整理してみた
ChatGPT・Copilot・Geminiに同じ仕事を頼んだら結果が全然違った
結局どれを使えばいい?目的別に生成AIを整理してみた【初心者向け】
初心者が最初にやるべき生成AI活用① ChatGPTで「長文を理解・整理する」読むのがしんどい人ほど効果が出る使い方
初心者が最初にやるべき生成AI活用②ChatGPTに「分からないことをそのまま相談する」使い方・聞き方を気にしない安心感
初心者が最初にやるべき生成AI活用③AIを「自分専用の調べ物係」にする使い方|検索に疲れた人ほど効果が出る
ChatGPTにブログ記事を“赤ペン先生”してもらったら修正力がすごかった話―書くのが苦手な人ほど使ってほしい文章改善―
CopilotでExcel作業手順書を一瞬で作る|引き継ぎ資料が秒で完成した話
Geminiでアイデアが枯れたときの発想復活法|何も思いつかないを脱出する使い方
ChatGPT・Copilot・Geminiをブレスト役で使い分ける実例|発想が加速した方法
CopilotでExcel集計→Word報告書を一気に作る実務フロー― 月次報告が“考えずに終わる”ようになった話 ―
大型Excel VBAはChat-GPTよりCopilotの方が作りやすい?実務で感じた変化
Copilotで会議議事録からToDo管理まで一気にやってみた実務フロー
Geminiで社内資料の画像を作ってみた|伝わらない資料が一瞬で変わった話
ChatGPTに流行りの「今まで私があなたをどう扱ってきたかを画像にして」を頼んでみた
ChatGPTのプロンプトを“自分用”に進化させる方法|頼み方で結果が激変する理由
初心者が最初にやりがちなプロンプトの失敗例と直し方
ChatGPTが急に賢くなる「前提条件」の渡し方-同じ質問なのに答えが変わるのはなぜ?-
プロンプトを毎回書かなくてよくなる“会話の残し方”
ChatGPTに「察してもらえない」と感じた時の原因と対処法|噛み合わない理由を実例で解説
AIに雑に投げても失敗しにくくなる頼み方のコツ|考えずに使っても噛み合う方法
プロンプトが思いつかない人のための“最初の一文”テンプレ集
ChatGPTを“相棒化”する人と、うまく使えない人の決定的な差
生成AIはどこまで使っていい?初心者が最初に知るべき法律の話
AI画像生成は違法?著作権で“やってはいけないこと”実例集
商用利用OK?NG?生成AIの利用規約を初心者向けに噛み砕く
AIで作った文章は誰のもの?著作権の考え方をやさしく解説
「知らなかった」では済まない?生成AIトラブル事例と回避法
ブログ・SNSでAI生成物を使うときの最低限の注意点まとめ
AIに頼りすぎて思考力が落ちた話|便利さの裏で起きたリアル失敗
AIの回答を信じて怒られた話|正しいはずが通用しなかった理由
ChatGPTにExcelマクロを直してもらったらコメントが消えた話|親切の落とし穴
Copilotの差分コードが分からなかった話|全コード出してもらう選択
ChatGPTにきれいな文章はいらなかった話|ぐちゃぐちゃでも伝わる
Copilotでクロス表を縦持ちデータに変換|実務VBA作成の流れ
Copilotでクロス表を縦持ちデータに変換|実務仕上げ編
Copilotでクロス表を縦持ちデータに変換|配列で高速化する
Copilotでクロス表を縦持ちデータに変換|項目変更に強い構造へ
Copilotでリストボックスにユニーク値を設定|実務VBA
Copilotでリストボックス並び替え対応|実務VBA
Copilotでリストボックス表示制御を追加|実務VBA
Copilotで階層連動コンボボックス作成|実務VBA
Copilotで列番号を動的管理|階層連動VBAの実務改善
Copilotで並び順統一とUI改善|階層連動VBA仕上げ
Copilotで高速化(配列化)|階層連動VBA最終仕上げ
CopilotにListViewを相談したら絶望した話|64bit VBAの壁
ListView強行突破|MSCOMCTL.OCX配置に成功した話
CopilotでListView登録に挑戦|regsvr32実行編(64bit VBA)
CopilotでListView確認|追加コントロール検証編(64bit VBA)
Copilotに全否定された件|ListView断念か?64bitの壁
CopilotでListView地獄を検証|32bit化で見えたWindowsの罠
CopilotでListView復活か?参照設定に見えた希望
Excel64bit版ListView問題の結論が見えた日
Excel64bit版ListView問題|2017年更新情報をCopilotへ再確認した結果
Excel64bitでListViewをあきらめて代替UIへ挑戦
Excel64bit代替UIに挑戦した結果…結局動かなかった話 ListViewの代替UI作戦が始まった
Excel64bit代替UIに挑戦した結果…hWndが取得できなかった理由 代替UI計画の本当の問題が見えてきた
Excel VBA WindowProcの壁 UserFormにウィンドウがなければWM_DROPFILES受取不可
Excel VBAでListBoxへドラッグ&ドロップできない理由 前回までのおさらい
Copilotはなぜ存在しない機能を提案したのか 前回ブログで生まれた新たな疑問
AIから正しいVBAコードを引き出す質問術

■■■スポンサーリンク■■■