web-dev-qa-db-fra.com

Quand utiliser les formats xlsm ou xlsb?

Depuis Excel 2007, Microsoft a divisé le format classique .xls en plusieurs formats (notamment .xlsx, .xlsm, .xlsb). Je n'ai aucun problème pour comprendre l'utilisation et l'objectif du format .xlsx mais je me demande toujours si nous devrions utiliser un format .xlsm ou .xlsb lors de la création d'un fichier contenant du VBA.

Bien sûr, vous pouvez trouver certains sujets sur le Web, par exemple:

Ce que j'ai compris de ce dernier lien est que .xlsm est une sorte de format XML et donc nécessaire pour un onglet de ruban personnalisé.

Au-delà de la différence conceptuelle entre le format (.xlsm est basé sur XML VS .xlsb est un fichier binaire), existe-t-il une différence pratique lorsque tout de ce fichier (en dehors de la personnalisation du ruban)?
Avez-vous déjà constaté une réelle différence lors de l’utilisation de ces formats?

94
JMax

Ils sont tous similaires en ce qu'ils sont essentiellement des fichiers Zip contenant les composants de fichier réels. Vous pouvez voir le contenu simplement en remplaçant l'extension par .Zip et en les ouvrant. La différence avec xlsb semble être que les composants ne sont pas basés sur XML mais au format binaire: cela est censé être bénéfique lorsque vous travaillez avec de gros fichiers. http://blogs.msdn.com/b/dmahugh/archive/2006/08/22/712835.aspx

59
Tim Williams

.xlsx charge 4 fois plus longtemps que .xlsb et enregistre 2 fois plus longtemps et contient un fichier 1,5 fois plus volumineux. J'ai testé cela sur une feuille de calcul générée avec 10 000 lignes * 1 000 colonnes = 10 000 000 (10 ^ 7) cellules de formules =…+1 chaînées simples:

╭──────────────╥────────┬────────╮
│              ║ .xlsx  │ .xlsb  │
╞══════════════╬════════╪════════╡
│ loading time ║ 165s   │  43s   │
├──────────────╫────────┼────────┤
│ saving time  ║ 115s   │  61s   │
├──────────────╫────────┼────────┤
│ file size    ║  91 MB │  65 MB │
╰──────────────╨────────┴────────╯

(Matériel: Core2Duo 2,3 GHz, 4 Go de RAM, SATA II HD à 5 400 tr/min; Windows 7, soumis à une charge un peu forte de la part d’autres processus.)

À côté de cela, il ne devrait y avoir aucune différence. Plus précisément, 

les deux formats supportent exactement le même ensemble de fonctionnalités

cite ce blog post du 2006-08-29. Ainsi, l’information selon laquelle .xlsb ne prend pas en charge le code Ruban est plus récente que la citation supérieure, mais j’imagine que la source de votre forum est tout simplement fausse. Lors de l'ouverture du fichier binaire, il semble imiter de manière condensée la structure de fichier OOXML 1 à 1: Blog article depuis le 2006-08-07

82
Aaron Thoma

On pourrait penser que xlsb ne présente que des avantages par rapport à xlsm . Le fait que xlsm soit basé sur XML et que xlsb soit binaire est que lorsque la corruption du classeur se produit, vous avez de meilleures chances de réparer un xlsm qu'un xlsb.

7

Le format XLSB est également dédié aux macros incorporées dans un fichier de classeur masqué situé dans le dossier de démarrage Excel (XLSTART).

Un test rapide et sale avec un xlsm ou xlsb dans le dossier XLSTART: 

Measure-Command { $x = New-Object -com Excel.Application ;$x.Visible = $True ; $x.Quit() }

0,89s avec un xlsb (binaire) contre 1,3s avec le même contenu au format xlsm (xml dans un fichier Zip) ... :)

Juste pour la postérité, voici le texte de plusieurs sources externes concernant les formats de fichier Excel. Certaines d’entre elles ont été mentionnées dans d’autres réponses à cette question mais sans en reproduire le contenu essentiel.

1. De Doug Mahugh, 22 août 2006:

... le nouveau format binaire XLSB. Comme Open XML, c’est un Format de fichier de fidélité qui peut stocker tout ce que vous pouvez créer dans Excel, mais le format XLSB est optimisé pour des performances telles que n’est pas possible avec un format XML pur. 

Le format XLSB (également parfois appelé BIFF12, dans «format de fichier binaire Pour Office 12») utilise la même convention Open Packaging Convention utilisé par les formats Open XML et XPS. Donc c’est fondamentalement un Zip conteneur, et vous pouvez l’ouvrir avec n’importe quel outil Zip pour voir ce qui se trouve à l’intérieur . Mais au lieu de pièces .XML dans le paquet, vous trouverez des pièces .BIN ...

Cet article fait également référence à la documentation sur le format BIN , trop longue à reproduire ici.

2. De MSDN Archive, 29 août 2006, qui cite à son tour un article de blog déjà manquant concernant le format XLSB:

Même si nous avons fait beaucoup de travail pour nous assurer que nos formats XML ouvrir rapidement et efficacement, ce format binaire est encore plus Pour Excel, il est efficace d’ouvrir et d’enregistrer des données et peut entraîner certaines performances améliorations pour les classeurs contenant beaucoup de données, ou qui... nécessite beaucoup d’analyses XML au cours du processus Open. (En fait, nous avons constaté que le nouveau format binaire est plus rapide que l’ancien format XLS dans de nombreux cas.) Il n’existe pas non plus de version sans macro de ce format de fichier - tous les fichiers XLSB peuvent contenir des macros (VBA et XLM). Dans tous les autres À ce titre, il est fonctionnellement équivalent au format de fichier XML ci-dessus:

Taille de fichier - la taille de fichier des deux formats est approximativement identique, puisque les deux formats sont enregistrés sur le disque en utilisant l’architecture de compression Zip – les deux formats utilisent la même structure d'empaquetage et les deux ont le même structures de niveau partiel. Prise en charge des fonctionnalités - les deux formats prennent en charge exactement la même fonctionnalité définie les performances d'exécution - une fois chargé en mémoire, le format de fichier n'a aucun effet sur la vitesse d'application/de calcul Convertisseurs - les deux formats auront un support de convertisseur identique

4
DaveInCaz

Pour une raison quelconque, l'utilisation de .xlsb sur .xlsm a résolu certains problèmes rencontrés avec une fonction définie par l'utilisateur créant des objets fantômes dans le modèle d'objet: https://superuser.com/questions/1005482/Excel-creates- non-existant-worksheets-in-vba-project-Explorer/1215336 # 1215336

0
SuMau