IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Conversion classeur OpenXML vers XLS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut Conversion classeur OpenXML vers XLS
    Bonjour à tous,

    Je voudrai convertir un classeur Excel qui se trouve au format xml (fichier très volumineux) en un classeur classique xls (qui est deux fois moins gros pour la même chose). Cette manip doit être possible car depuis Excel et même depuis le VBA en faisant un saveAs(), cette opération fonctionne bien.

    Mais alors pourquoi, je post? le problème c'est que pour faire un saveAs, il faut (je pense) ouvrir le classeur XML et cela fonctionne pour des classeur xml de taile <8Mo, pour des tailles supérieures vba renvois une erreur de "type inconnu" (j'aime bien le nom...) et mon ordi n'est pas spécialement un vieux coucou!!!.

    Donc est-il possible de faire un saveAs (ou equivalent) d'un classeur sans avoir à l'ouvrir. Pour info j'ai aussi creusé du coté de Application.FileConverters sans avoir trouver mon bonheur.

    merci d'avance.

  2. #2
    Membre Expert Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Par défaut
    Ca vaudrait la peine d'essayer avec .Net (pas besoin d'avoir Visual Studio...).

    Voici un exemple de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Excel._Application app = new Excel.Application();
    app.Visible = false;
    Excel.Workbooks workbooks = app.Workbooks;
    object missing = Missing.Value;
    Excel._Workbook workbook = workbooks.Open(tempname, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
    try
    {
        File.Delete(filename);
    }
    catch {}
    object fileToSave = filename;
    object workbooknormal = -4143;
    Excel.XlSaveAsAccessMode nochange = Excel.XlSaveAsAccessMode.xlNoChange;
    workbook.SaveAs(fileToSave, workbooknormal, missing, missing, missing, missing, nochange, missing, missing, missing, missing, missing);
    workbook.Close(missing, missing, missing);
    app.Quit();
    Par contre, il faut télécharger et installer un complément à Office (Microsoft.Office.Interop.Excel.dll)

  3. #3
    Membre averti
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Par défaut
    ok merci, je vais tenter le coup

    ----EDIT

    J'ai fait un test de ta manip mais sans passer par le .net car je dois me débrouiller uniquement en vba, en gros ça donne un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    Sub MaSub()
     
    Dim xlApp As New Excel.Application  ' déclarer Public si dans un module
    Dim xlBook As New Excel.Workbook
     
    'Ouvrir le classeur dont on a besoin avec tout le chemin...
        Set xlBook = xlApp.Workbooks.Open("classeur.xml")
        xlBook.saveAs("classeur.xls", xlNormal) 
     
        xlBook.Close
        xlApp.Quit
     
        Set xlBook = Nothing
        Set xlApp = Nothing
     
    End Sub
    mais ça plante comme avant donc dés lors que l'ont veut utiliser Excel ou une instance de celui-ci, ça plante dès que mon fichier dépasse une certaine taille. On dirait qu'il pédale sur une multitude d'action (tests-boucles) à l'interprétation du classeur xml.

    D'autres pistes?

Discussions similaires

  1. [XL-2007] Conversion Classeur 2003 Vers 2007
    Par goonie66 dans le forum Excel
    Réponses: 1
    Dernier message: 09/08/2010, 21h41
  2. [XL-2003] Probleme lors d'une conversion d'un fichier .xls vers .cvs
    Par la_pascaline dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 29/06/2010, 17h22
  3. Conversion de table et exportation vers xls
    Par Chachane dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 22/03/2010, 08h10
  4. conversion classeur vers excel 2007
    Par jlp22 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/11/2007, 08h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo