Excel64bitでListViewをあきらめて代替UIへ挑戦

前回まで、かなり長い間

Excel VBA 64bit環境でListViewを使う方法

をCopilotと一緒に調査してきました。

  • MSCOMCTL.OCXを探す
  • SysWOW64へ配置する
  • regsvr32で登録する
  • 32bit版Excelを入れて確認する
  • 64bit版Excelへ戻して確認する
  • 会社PCと自宅PCの違いを調査する

ここまでやりました。

結果として分かったことは、

会社のPCで動いているのは特殊な環境である可能性が高い

ということでした。

つまり、

64bit版ExcelでListViewを使うこと自体が不安定

ということです。

そこで今回は発想を変えます。

ListViewを無理やり使う方法ではなく、

Excel64bit環境で安定して動く代替UI

を作れないかCopilotに相談してみました。

さて、代替UI制作は実現するのでしょうか???

本当にやりたかったこと

そもそも私がやりたかったことは、

ListViewを使うこと

ではありません。

やりたかったことは、

  • 大量のファイルをドラッグ&ドロップ
  • 一覧表示
  • クリック選択
  • 選択した情報の取得

です。

つまり、ListViewは手段であって、目的ではなかった のです。

ここに気付けたのは大きかったです。

Excel64bitでListViewをあきらめて代替UIへ挑戦

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

実際のCopilotとのやり取り

利用者 → Copilot

Excel VBA 64bit環境のままで、ListViewと同じような操作ができる画面を作りたいです。

私が実現したいことは、

・大量のファイルをドラッグ&ドロップする
・取り込んだファイルを一覧表示する
・クリックで選択状態にする
・選択したファイル情報を取得する

ことです。

ListViewを使わずに実現する方法を初心者にも分かるように教えてください。

Copilot → 利用者

実は、その用途であればListViewは必須ではありません。

Excel VBA 64bit環境でも、

・ListBox
・UserForm
・Windows API

を組み合わせれば、
ListViewとほぼ同じ操作性を実現できます。

しかも、

・MSCOMCTL.OCX不要
・ActiveX不要
・64bit対応
・配布先でも壊れない

というメリットがあります。

完成イメージは次のようになります。

・ファイルをドラッグ&ドロップ
・ファイル一覧表示
・複数列表示
・クリック選択
・選択データ取得

これを次の手順で作成できます。

ステップ①:UserForm に ListBox を置く
まずはUserForm上にListBoxを配置します。
ここでファイル一覧を表示します。

ステップ②:UserForm にドラッグ&ドロップを有効化する
標準のUserFormは、実はドラッグ&ドロップに対応していません。
そのため、Windows APIを使って対応する必要があります。

ステップ③:ドラッグされたファイルを受け取る処理
ドラッグされたファイルを受け取り、
ファイル名やパスを取得します。

ステップ④:UserForm 側でファイルを受け取る処理
取得したファイル情報をListBoxへ表示します。
ここで複数列表示も可能になります。

ステップ⑤:クリックで選択された行の情報を取得
ListBoxのクリックイベントを利用し、
選択されたファイルの情報を取得します。

正直な感想

ここで思ったのが、え?本当にこれだけ?でした。

今までListViewに時間を費やしてきたので、代替案があまりにもあっさり出てきて驚きました。

しかし冷静に考えると、Copilotは 何を実現したいのか を見ていました。

私は ListViewを使いたい と思っていました。

でもCopilotは、ファイル一覧を表示したいのですよね? と考えていたわけです。

この発想の違いはかなり大きいです。

でも正直これだけでは分からない

ここで初心者の方は、おそらく私と同じ感想になると思います。

わからん(笑)です。

例えば、ドラッグ&ドロップ対応 と言われても、どこにコードを書くの?です。

Windows API と言われても、何それ?です。

ListBoxへ表示 と言われても、どのプロパティを設定するの?となります。

つまり、概要は分かった。でも作り方は分からない状態です。

今回は設計図をもらっただけ

今回Copilotが教えてくれた内容は、家づくりで例えると設計図です。

しかし、実際に家を建てるには、

  • 基礎工事
  • 屋根

を順番に作る必要があります。

今回の内容だけでは、まだ完成できません。

まとめ

長く続いたListViewとの戦いですが、ようやく方向性が見えてきました。

今までは どうやったらListViewを使えるか を考えていました。

しかし今回Copilotから提案されたのは、どうやったら目的を実現できるか という考え方でした。

これはAI活用でも非常に重要です。

目的を伝える
      ↓
AIが最適な方法を提案する

この流れです。

今回Copilotから教えてもらった内容だけでは、まだ実装できるレベルではありません。

ですが、これから作るべきものの全体像は見えました。

次回からはいよいよ実装編です。

まずはUserFormとListBoxを使って、ListViewの代替となる画面作りをスタートしていきます。

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

リンク

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コードを引き出す質問術

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