2013-05-28 4 views
24

Ho un'applicazione legacy sviluppata in VBA/Excel che utilizza i controlli ListView. Sfortunatamente, sembra these controls can't be used with 64-bit versions of Excel:Ricerca di alternative a 32 bit Solo Microsoft Common Controls (ListView)

I processi nativi a 64 bit in Office 2010 non possono caricare file binari a 32 bit. Ciò include i controlli comuni di MSComCtl [come ListViews]. Un'alternativa è necessario trovare delle soluzioni esistenti di Microsoft Office VBA che utilizzano questi controlli quando il codice viene eseguita la migrazione a 64 bit di Office 2010.

ho bisogno di migrare applicazioni legacy che in Excel 2010/13 x64. Il processo è per lo più indolore tranne per i controlli ListView.

Quali sono le opzioni principali per sostituire il controllo ListView e quale sarebbe la soluzione più efficace (da un momento in cui la prospettiva è &)?

Note:

  • Questo problema è stato sollevato su MS forums ma nessuna risposta concreta è stato dato.
  • aggiungendo .net tag come sospetto che alcune soluzioni potrebbero venire da lì.

per renderlo più chiaro, qui è un'istantanea della forma utente di Excel. La parte inferiore è la vista elenco (ho nascosto le informazioni riservate), che ha una colonna ordinabile, consente all'utente di selezionare più righe, non consecutive.

enter image description here

+0

Quali ListView stai usando? Intestazioni di colonna? Gruppi? Quanto lontano otterrebbe invece un ListBox disegnato dal proprietario? – shambulator

+0

@shambulator Principalmente: intestazioni, ordinamento colonne, selezione multi-linea, dimensionamento automatico delle colonne. – assylias

+0

Le ListViews sono in UserForm o direttamente nei fogli di lavoro? Se il secondo, che ne è l'utilizzo di tabelle di Excel (ad es.'ListObjects') - e aggiungi qualche comportamento individuale con gli eventi (ad es. Per selezionare più righe, ordinare le colonne)? –

risposta

4

Io non sono a conoscenza di qualsiasi soluzione qui. Tuttavia, JKP ha sviluppato a native TreeView in VBA with Userforms only per sostituire TreeView - che funziona bene a 64 bit.

Anche se lavoro intenso si potrebbe considerare l'adozione ad un controllo ListView ...

7

Una cosa che è teoricamente possibile sarebbe quello di scrivere il codice di visualizzazione come un assembly .NET e di accesso che tramite COM da VBA codice (vedere ad esempio How can I make use of .NET objects from within Excel VBA? come punto di partenza per come farlo).

In questo modo è possibile scrivere il codice .Net per i controlli. Non l'ho fatto da solo e non sono sicuro di quanto si possa applicare al tuo problema, ma sembra un'opzione.

Ho appena trovato un short tutorial per chiamare. NET da Excel.

+0

Probabilmente funziona, ma non mi è molto familiare witn .net (di solito uso Java) e non sono sicuro di come tale esempio possa essere trasposto per mostrare un oggetto complesso in una forma utente. – assylias

-1

È necessario eliminare e quindi registrare nuovamente il controllo e funzionerà correttamente. Utilizzare RegSvr32 per registrare nuovamente il controllo.

Vedere questo link per maggiori informazioni: http://answers.microsoft.com/en-us/office/forum/office_2010-access/listview-issue-in-access-2010/d0b6f86a-1d9c-4d7f-8566-b80a10bb67c6 capacità

+0

Hai provato? Penso che RegSvr32 nella cartella 'SysWow64' (come descritto nel link) possa solo registrare librerie a 32 bit. E le librerie a 32 bit non sono disponibili in Excel x64. – assylias

+1

Il mio male, ho perso quella parte riguardo al fatto che fosse per 32 bit in qualche modo. Tutte le mie ricerche hanno rivelato che le persone dovevano creare il proprio controllo e nessuno sembrava troppo ansioso di pubblicare i propri risultati. –

Problemi correlati