Mettre en forme un fichier openoffice à partir de VB6
grand_dragon_rouge54
Messages postés23Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention14 octobre 2006
-
7 oct. 2006 à 22:37
michelxld
Messages postés402Date d'inscriptionvendredi 6 août 2004StatutMembreDernière intervention12 octobre 2008
-
11 oct. 2006 à 17:56
Bonjour à tous.
J'ai programmé une application VB6 qui va récolter des données dans une base access et les renvoie dans un fichier texte de openoffice (avec donc une extension .sxw).
Tout cela fonctionne très bien.
Néanmoins, à partir de mon application VB6, je souhaiterai mettre n forme le texte du fichier texte en openoffice. Par exemple, mettre en gras, italique ou souligné du texte ou le centrer dans la page.... Ce genre de truc.
Queqlu'un connaîtrez t il les commande de programmation nécessaires ? Je suis aussi intéressé pour que cela fonctionne éventuellement avec un fichier en Word...
De même, en plus des explications, un petit exemple serait super.
Je vous mets ci dessous un exemple de ma connection à la base et de la redistribution des données dans le document final.
Merci d'avance de votre aide car c'est très urgent. Mon patron pousse au c.l et veut ça pour avant hier.....
Merci à tous.
Nico.
__________________________________________
'Déclaration de la variable de connection
Dim con As New ADODB.Connection
Set con = New ADODB.Connection
'Connection a la base de données
con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MaBase.mdb"
'Declaration de la variable de recorset
Dim res As New ADODB.Recordset
Set res = New ADODB.Recordset
'Ouverture de la connection
con.Open
'Requete a effectuer : On récupére tous les enregistrement de la table nommée MaTable
res.Open "select * from MaTable", con, adOpenDynamic, adLockOptimistic
'Ouverture du fichier OpenOffice Texte
Open "C:\MonFichier.sxw" For Output As #1
'Tant qu'on a pas atteint la fin des enregistrements retournés par la requête, on les parcours tous un par un
Do Until res.EOF
Inscription dans le fichier du contenu d'un champ présent dans la requête ci dessus
Print #1, "Contenu du champ :" & res!MonChamp Ce sont ces données que je souhaite par exemple mettre
en gras, italique,...
'On passe à l'enregistrement suivant
res.movenext
'On boucle tant qu'on a pas atteint le dernier enregistrement
Loop
'On ferme le fichier OpenOffice Texte
Close #1
'Fermeture de la connection à la base de données
con.Close
A voir également:
Mettre en forme un fichier openoffice à partir de VB6
michelxld
Messages postés402Date d'inscriptionvendredi 6 août 2004StatutMembreDernière intervention12 octobre 200832 8 oct. 2006 à 08:30
bonjour
j'espere que cette procedure pourra t'aider (testé avec VB6 & OOo2.0.3 & WinXP)
Private Sub Command1_Click()
Dim serviceManager As Object, oText As Object, oCursor As Object
Dim Desktop As Object, Document As Object
Dim Fichier As String
Dim args()
Dim T As Date
'Attention à bien spécifier le format URL
Fichier = "[file:///C:/monFichier.sxw file:///C:/monFichier.sxw]"
'Création d'une instance Open Office
Set serviceManager = CreateObject("com.sun.star.serviceManager")
Set Desktop = serviceManager.createInstance("com.sun.star.frame.Desktop")
'Ouverture du fichier
Set Document = Desktop.loadComponentFromURL(Fichier, "_blank", 0, args)
Set oText = Document.GetText()
'Création du curseur d'écriture
Set oCursor = oText.createTextCursor
'Déplace le curseur a la fin
oCursor.gotoEnd (False)
oCursor.CharWeight = 150 'Gras(100 pour normal)
oCursor.CharPosture = 2 '(italique) spécifier 0 pour normal
'insère du texte et un saut de ligne a l'emplacement du curseur
oText.insertString oCursor, "Les nouvelles informations" & vbLf, False
'Enregistre les modifications
Document.Store
DoEvents
'--------
'ajoute une temporisation de 2 secondes pour empécher que le fichier
'ne se ferme avant la fin de la création
T = Timer + 2: Do Until Timer > T: DoEvents: Loop
'--------
'Fermeture du fichier
'L'argument True indique que les modifications vont être sauvegardées à la fermeture
Document.Close (True)
grand_dragon_rouge54
Messages postés23Date d'inscriptiondimanche 30 avril 2006StatutMembreDernière intervention14 octobre 2006 9 oct. 2006 à 13:38
Lorsque j'essaie, j'obtiens une erreur de type Run-time error '1001' avec le message d'erreur comme suit : com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
Lorsque je lance le Debug de vb6, il me signale la ligne suivante comme erreur :
Set Document = Desktop.loadComponentFromURL(Fichier, "_blank", 0, args)
As tu une idée de ce qu'il faut changer ou faire ?