Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.
Modérateur :Vilains modOOs
Règles du forum Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Dans une macro qui manipule plusieurs feuilles d'un workbook ODS, en isole une dans un nouveau document et la sauve en format XLSX, je rencontre un problème avec la commande SaveAs:
En fait, j'avais déjà testé une telle séquence, trouvée dans un autre post, mais cela n'avait pas fonctionné, mais je viens de voir une différence au niveau de la syntaxe. Avec ce code, le sauvetage fonctionne, avec quand même quelques problèmes:
1- Le format n'est pas le format xlsx, en renommant, j'ai vu qu'Excel pouvait le lire à condition de le renommer XLS;
je devrais pouvoir résoudre cela en cherchant le bon type à mettre dans le code uno.
2- Le document sauvé n'est pas celui créé par la commande "copy", mais bien l'original, avec tous ses onglets.
c'est pourtant la copie qui est active, mais Thisdocument n'est manifestement pas le bon document.
3- A la fermeture du fichier avec sauvegarde, j'ai une Exception:
Erreur d'exécution BASIC.
'1'
Type: com.sun.star.task.ErrorCodeIOException
Message: SfxBaseModel::storeSelf: 0x31c
C'est sans doute lié au problème 2: ce n'est pas le bon document qui se ferme mais celui qui contient le code en cours d'exécution.
Il s'agit donc de trouver un équivalemnt de "ThisComponent.CurrentController.Frame" qui pointe sur la copie et pas sur l'original.
Là, je rame car le modèle uno est tout à fait nouveau pour moi. Peut-être avec l'enregistreur, mais quand j'avais commencé à chercher de ce côté-là pour d'autres conversions, j'avais été plutôt déçu: le code était très incomplet, tout n'étant pas supporté par l'enregistreur.
Roger
LibreOffice7.0.6.2 (x64) - OpenOffice 4.1.10 - Windows 10
Sorry, j'essayais de poser des questions basiques pour tenter de comprendre les principes plutôt que d'envoyer un fichier avec une application assez lourde qui contient des données personnelles que je n'ai pas le droit de diffuser.
Dans ce cas précis, j'avais bien indiqué que la cause du plantage était probablement que le document fermé avec sauvegarde n'était pas le bon (cf. "storeSelf" dans le msg d'erreur).
J'ai donc abandonné l'idée que le document que je voyais à l'écran à ce stade du code était le document actif et j'ai remplacé ActiveWorkbook par un adressage spécifique, ce qui alourdit le code car le problème revient à divers endroits, mais cela fonctionne: