2013-05-28 33 views
24

我有一個使用ListView控件的VBA/Excel開發的遺留應用程序。不幸的是,它看起來像these controls can't be used with 64-bit versions of Excel尋找只有32位的替代方案Microsoft公共控件(ListView)

Office 2010中的本機64位進程無法加載32位二進制文​​件。這包括MSComCtl的常用控件[如ListViews]。 另一種必須利用這些控件的代碼時遷移到64位Office 2010

我需要遷移遺留應用程序到Excel一十三分之二千○十64現有的Microsoft Office VBA解決方案中找到。除了那些ListView控件外,這個過程大多是無痛的。

什麼是我的主要選擇更換ListView控制和這將是最有效的(從時間&難以實現的角度)?

注:

  • 這個問題已經提出了對MS forums,但沒有實際的答案已經給出。
  • 添加.net標記,因爲我懷疑有些解決方案可能來自那裏。

使其更清晰,這裏是Excel的用戶窗體的快照。底部是列表視圖(我有隱藏的機密信息),它具有可排序的列,允許用戶選擇多個不連續的行。

enter image description here

+0

您正在使用哪種ListView功能?列標題?組?自主繪製的ListBox能夠取得多遠? – shambulator

+0

@shambulator主要有:標題,列排序,多行選擇,列自動調整大小。 – assylias

+0

用戶窗體中的ListView或直接在工作表中?如果是後者,那麼使用Excel表格(即'ListObjects') - 並添加一些單獨的行爲與事件(例如多選行,排序列)? –

回答

4

我不知道這裏的任何解決方案。但是,JKP已經開發了a native TreeView in VBA with Userforms only來取代TreeView--在64位下工作正常。

雖然勞動密集的,你可以考慮採用的ListView控件...

7

一件事,在理論上是可能會寫你的顯示器代碼作爲.NET程序集和訪問是通過您的VBA COM代碼(例如,請參閱How can I make use of .NET objects from within Excel VBA?作爲如何執行此操作的起點)。

這樣你可以爲你的控件編寫.Net代碼。我自己並沒有這樣做,也不確定它是否適用於您的問題,但看起來像是一種選擇。

我剛剛發現從Excel調用.Net的short tutorial

+0

這可能可以工作,但我不是很熟悉witn .net(我通常使用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位庫。 Excel x64中不提供32位庫。 – assylias

+1

我的不好,我錯過了關於它以32位爲特色的那部分。我所有的搜索結果都讓人們不得不建立自己的控制權,而且似乎沒有人願意公佈他們的結果。 –