2011-11-10 16 views
5

Esiste un problema di compatibilità tra le macro scritte per XLS, XLSX e XLSM? La stessa macro funzionerà per tutte le cartelle di lavoro?Esiste un problema di compatibilità tra le macro scritte per XLS, XLSX e XLSM?

+3

Penso che tu stia confondendo le persone concentrandoti sul nome del file piuttosto che menzionando la retrocompatibilità tra le versioni di Office. Se riformuli la tua domanda, potresti ottenere risposte più appropriate. – JimmyPena

+0

@JP Grazie :) – kinkajou

risposta

10

Ci sono differenze significative tra questi formati:

  • .XLS è destinato ad essere utilizzato per Excel 2003 e, soprattutto, in modo che il codice VBA deve essere retrocompatibile per le versioni precedenti di Excel (< 2007)
  • .XLSX è il formato Excel 2007 che non può memorizzare il codice VBA.
  • .XLSM o .XLSB sono il formato Excel 2007 che consente di salvare il codice VBA con la cartella di lavoro. Come ha detto Sydenam, le differenze tra questi due sono il modo in cui è archiviata la cartella di lavoro.

In breve: .XLSB è il formato binario (equivalente a .XLS per 2007+ versione) che .XLSM è il formato OOXML.

Vedere When should the xlsm or xlsb formats be used? per ulteriori informazioni.


Addendum per la compatibilità

non riesco a vedere un modo semplice per dirvi come può essere compatibile, non può essere che generico. Si può vedere su Ozgrid i nuovi metodi e le proprietà che sono stati aggiunti in Excel 2007. È inoltre possibile trovare here alcuni suggerimenti su come sviluppare su Excel 2007.

La pagina Ozgrid vi darà i nuovi elementi di Excel 2007 e poi ti dirà cosa non dovresti usare se volessi essere retrocompatibile. risposta

+0

Grazie per la risposta. La domanda non è una differenza tra varie estensioni di file !!! – kinkajou

+0

Penso che stia chiedendo di più sulla retrocompatibilità tra i metodi VBA di Office 2007 e 2003. Ad esempio, in Office 2007 sono disponibili nuovi metodi ed eventi che non verranno compilati nel 2003. – JimmyPena

+0

@ JP: Accidenti, grazie. La domanda dell'OP era davvero, davvero poco chiara ... Eppure, ho modificato la mia risposta per soddisfare questo nuovo requisito. – JMax

1

Excel utilizza Visual Basic for Applications (VBA) per le macro. La differenza principale tra i diversi tipi di file è la modalità di memorizzazione dei dati (modifica & importante XLSX non è in grado di salvare macro, dei formati nella domanda XLSM e XLS possono salvare macro nella cartella di lavoro). È Excel e VBA che gestiscono i macro, quindi non ha alcun problema tra tutti e tre i formati di file.

+0

No, non funzionerà tra tutti e tre i formati perché 'XLSX' ** non può memorizzare VBA ** – JMax

+0

@JMax Stai suggerendo che se scrivo una macro in una cartella di lavoro XLSX non funzionerà ? Solo perché non può essere immagazzinato, non significa che non funzionerà. –

+0

hmmm ... funzionerà ... finché non salverai la tua cartella di lavoro nel formato XLSX – JMax

2

Sede di jMax per un elenco di metodi che non sono disponibili in Excel 2003.

In generale, si dovrebbe scrivere codice per la versione più bassa di Excel si è disposti a sostenere. Es .: se stai supportando Excel 2000-2010, il tuo codice dovrebbe essere scritto per Excel 2000.

Ricordare, tuttavia, che alcuni metodi potrebbero essere deprecati nelle versioni successive.

Ad esempio, vorrei evitare di usare FileSearch del tutto (deprecato in Excel 2007) e utilizzare Dir invece.

Il codice dovrebbe anche testare la versione locale di Excel e utilizzare la compilazione condizionale a seconda della versione.

Per informazioni sulla compilazione condizionale, vedere Using Conditional Compilation.

Ricordare inoltre che i file XLSX non possono salvare macro. Quindi non dovresti mai salvare i file in questo formato se contengono codice macro.

+0

+1 per indicare la funzione "FileSearch'. MS ha detto che era bacato, quindi lo hanno rimosso in Excel 2007+, che può essere difficile! – JMax

Problemi correlati