VB Remplir fichier ODS (openoffice Calc) déjà ouvert

Fermé
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 - 8 nov. 2021 à 09:48
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 - 10 nov. 2021 à 10:53
Bonjour à tous,

Je souhaite remplir et lire un fichier ods de openoffice calc déjà ouvert.
Je fais déjà cette opération avec excel assez facilement avec un "Getobject" mais je n'y arrive pas avec Open office.

Je suis déjà parvenu à ouvrir un fichier existant, à le modifier, à le sauvegarder et à le fermer avec le code suivant mais maintenant je dois le faire sur un fichier déjà ouvert.

'chemin du fichier à ouvrir
fichier = "file:///H:\Synchronized\stat.ods"
fichier = Replace(fichier, "\", "/")

Set oServ = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oServ.createInstance("com.sun.star.frame.Desktop")

Set Doc = oDesk.loadComponentFromURL(fichier, "_blank", 0, Args)
Set oSheet = Doc.getSheets().getByIndex(0)

oSheet.getCellByPosition(20,20).SetString ("test")

Doc.store()
Doc.Close (True)



Merci pour votre aide


Configuration: Windows / Edge 95.0.1020.44
A voir également:

6 réponses

OOoForum Messages postés 3871 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 10 juin 2024 960
8 nov. 2021 à 11:47
VB = Microsoft
Quel est le rapport avec OpenOffice ?
Le copier/coller entre classeurs est expliqué ici :
https://forum.openoffice.org/fr/forum/ftopic6371-macro-copier-coller-entre-ods.html


.
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
9 nov. 2021 à 16:33
Bonjour,

VB est aussi intégré par d'autre entreprise que Microsoft. Par exemple Siemens pour la programmation de machine.
Si vous voulez le detail, c'est un IHM de machine qui doit réaliser des statistiques pendant le process.
Ces calculs de statistiques peuvent être réalisés par Calc de open office mais il faut tout de même que les données soient envoyées par l'IHM.
Actuellement je rempli un fichier Excel avec l'IHM mais maintenant nous souhaitons remplir le fichier Calc

Merci
0
OOoForum Messages postés 3871 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 10 juin 2024 960
10 nov. 2021 à 08:08
VB = VisualBasic qui est un langage de programmation orienté pour la suite MS-Office.
OpenOffice a son propre Basic et les deux langages sont complètement différents.



.
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
10 nov. 2021 à 10:10
Je n'ai jamais dit que j'utilisais le basic de openOffice.
Je veux acceder à mon document Open Office à partir d'une application tierce.
Cette application tierce utilise visual basic.

Sinon ça vous arrive d'intervenir sur le forum pour faire avancer les sujets ?
Pour aider les autres il faut ouvrir son esprit et essayer de comprendre le sujet.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OOoForum Messages postés 3871 Date d'inscription jeudi 20 mars 2008 Statut Membre Dernière intervention 10 juin 2024 960
10 nov. 2021 à 10:24
Il me semble vous avoir donné un lien.
Votre application ne peut pas piloter OpenOffice avec du VB.
Maintenant, ici on donne de l'aide pro bono. Je m'arrêterai donc là.
Bon courage.


.
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
10 nov. 2021 à 10:53
Un lien qui n'a aucun rapport

C'est possible
Voici le code. Je n'ai pas terminé mais ce n'est pas avec votre lien que j'ai pu avancer


Dim Args()
Dim serviceManager
Dim fichier, oServ, oDesk, oSheet, Doc
Dim CalcApp
Dim start
Dim cmpt
Dim validation
Dim ErrorDesc
Dim CellRange, Flags
Dim RangeCell
Dim SearchFlags

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''Transformation du chemin pour l'ouvrir au format URL'''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
fichier = "file:///Z:\H\Not_Synchronized\stat.ods"
fichier = Replace(fichier, "\", "/")
'-------------

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''Création d'une instance OpenOffice''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set oServ = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oServ.createInstance("com.sun.star.frame.Desktop")

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''Création d'un nouveau fichier Calc'''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Set Doc = oDesk.loadComponentFromURL(fichier, "_blank", 0, Args)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''Utilisation du classeur déjà ouvert'''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set Doc = oDesk.CurrentComponent

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''Se placer sur la première feuille'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set oSheet = Doc.getSheets().getByIndex(0)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''Ecriture dans une cellule avec les coordonnées getCellByPosition(column, row) Attention commencer par 0,0 = A1'''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
oSheet.getCellByPosition(20,20).SetString (SmartTags("ErrorDesc").Value)
'oSheet.getCellByPosition(20,20).SetString ("test1")

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''Lecture valeur de cellule avec les coordonnées getCellByPosition(column, row) Attention commencer par 0,0 = A1'''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
ErrorDesc = oSheet.getCellByPosition(20,20).string

SmartTags("ErrorDesc") = ErrorDesc

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''Selection plage de cellule avec les coordonées getCellRangeByPosition(c1,l1,c2,l2) Attention commencer par 0,0 = A1''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Set RangeCell = oSheet.getCellRangeByPosition(1,19,1,50)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''Selection plage de cellule avec le nom getCellRangeByName("A19:A29")''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set RangeCell = oSheet.getCellRangeByName("A19:A29")
RangeCell.clearContents(1023)

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''Sauvegarde du fichier en cours''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Doc.store()

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''Fermeture du fichier en cours''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Doc.Close (True)




c'est possible d'ouvrir un classeur, de travailler sur un classeur déjà ouvert.
Effectivement vous pouvez arréter la.

Je posterai mon code final pour aider d'autres personnes quand j'aurai terminé.
0