2013-05-28 155 views
24

ListViewコントロールを使用するVBA/Excelで開発されたレガシーアプリケーションがあります。残念ながら、these controls can't be used with 64-bit versions of Excelのようになります。32ビットのみの代替案を探すMicrosoft Common Controls(ListView)

Office 2010のネイティブ64ビットプロセスは、32ビットバイナリをロードできません。これには、ListViewsなどのMSComCtlの共通コントロールが含まれます。 代替コードは、2010年

64ビット版Officeに移行された場合、これらのコントロールを使用し、既存のMicrosoft OfficeのVBAソリューションのために見つけなければならない私は、Excel 13分の2010のx64にそのレガシーアプリケーションを移行する必要があります。このプロセスは、ほとんどListViewのコントロールを除いて無痛です。

ListViewコントロールを置き換えるための主なオプションは何ですか(最も難しいのは、視点を実装するのが難しい&です)。

注:

  • この問題はMS forumsに提起されてきたが、実用的な答えが与えられていません。
  • .netタグを追加すると、そこからいくつかの解決策が出てくる可能性があります。

それをより明確にするために、ここではExcelのユーザーフォームのスナップショットがあります。一番下の部分はソート可能な列を持つリストビュー(私は機密情報を隠している)で、複数の連続していない行を選択することができます。

enter image description here

+0

は、詳細はこのリンクを参照してください?列ヘッダー?グループ?所有者が描いたリストボックスは、あなたの代わりにどのくらいの距離を得ることができますか? – shambulator

+0

@shambulator主に:ヘッダー、列の並べ替え、複数行の選択、列の自動サイズ変更。 – assylias

+0

ListFormsはユーザーフォームに含まれているのか、ワークシートに直接ありますか?後者の場合、Excelテーブル(つまり、'ListObjects') - いくつかの個々の動作にイベントを追加する(複数選択行、並べ替え列など)? –

答えて

4

私はここにすべてのソリューションを認識していませんよ。しかし、JKPは、TreeViewを置き換えるためにa native TreeView in VBA with Userforms onlyを開発しました。これは64ビットでうまく動作します。

労働強烈あなたはListViewコントロールにそれを採用する検討することもできますが...理論的には可能である

7

ことの一つは、あなたのVBAからCOMを経由していることを.NETアセンブリとアクセスとしてあなたの表示コードを書くことであろうコード(例えば、これを行う方法の開始点としてHow can I make use of .NET objects from within Excel VBA?を参照してください)。

あなたのコントロール用の.Netコードを書くことができます。私は自分自身でそれをやっていないし、それがあなたの問題にどれだけうまく適用されているか分からないが、オプションのように見える。

Excelから.Netを呼び出すためのshort tutorialが見つかりました。

+0

これはおそらくうまくいくかもしれませんが、私はよく慣れていません(私は一般的にJavaを使用しています)、複雑なオブジェクトをユーザーフォームに表示するためにその例をどのように入れ替えることができないのか分かりません。 – assylias

-1

コントロールを削除してから再登録する必要があります。正常に動作します。 RegSvr32を使用してコントロールを再登録します。リストビュー機能は、使用しているhttp://answers.microsoft.com/en-us/office/forum/office_2010-access/listview-issue-in-access-2010/d0b6f86a-1d9c-4d7f-8566-b80a10bb67c6

+0

試しましたか?私は 'SysWow64'フォルダ内のRegSvr32(あなたのリンクで詳述)は32ビットライブラリしか登録できないと思う。 32ビットライブラリはExcel x64では使用できません。 – assylias

+1

私の悪い、私はそれについて何とか32ビットのためにその部分を逃した。すべての検索結果が自分のコントロールを作成する必要があり、誰も結果を投稿できないようでした。 –

関連する問題