[Résolu][VB] Remplir un champ avec signet sous Writer

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur: Vilains modOOs

Règles du forum
:alerte: 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 !

[Résolu][VB] Remplir un champ avec signet sous Writer

Messagepar liger » 02 Jan 2018 16:37

Bonjour
Je commence à utiliser OpenOffice et j'aimerais savoir si c'est possible de faire la même chose ci-dessous (fait avec Word) sous Writer en langage Visual Basic 6.
Code : Tout sélectionner   AgrandirRéduire
If .ActiveDocument.Bookmarks.Exists("annee") Then
        .ActiveDocument.FormFields("annee").Select
        .Selection.Text = Format(txtdu.Value, "yyyy")
End If

Ce code permet de vérifier si dans le document Word ouvert il y a un signet annee et si c'est le cas alors on lui attribuait une valeur.
J'ai besoin d'utiliser cette méthode pour plusieurs champs déjà crées dans un document Writer existant.
J'ai déjà testé plusieurs codes mais je n'arrive jamais à faire la même chose, ci dessous vous trouverez une partie d'un exemple de code que j'ai déjà essayé mais qui me note plusieurs messages d'erreur sous VB6 :
Code : Tout sélectionner   AgrandirRéduire
Set occ = doc.getCurrentController().getviewcursor()
Set bookmark = doc.getBookMarks().GetByName(annee)

J'ai regardé un peu partout et je n'ai rien trouvé qui puisse m'aider donc j'ai besoin d'une piste qui m'aiderait à solutionner mon problème.
Je vous joins un document Writer avec un champ déjà existant que j'aimerais remplir à partir de VB 6.
Merci par avance pour votre aide.
Cordialement.
Pièces jointes
exemple.odt
exemple d'un champ déjà crée dans un document
(17.04 Kio) Téléchargé 18 fois
Dernière édition par liger le 04 Jan 2018 09:33, édité 3 fois.
OpenOffice 4.1.4 Windows 7
liger
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 02 Jan 2018 15:06

Re: [Writer] remplir un champ avec signet en VB6

Messagepar micmac » 02 Jan 2018 17:11

Bonjour et bienvenue,

Cette section a des règles très précises que vous devez obligatoirement suivre pour obtenir de l'aide. C'est indiqué dans le cadre rouge en haut de la page.

Il est demandé aux auteurs de faire précéder le titre de leur question d'une balise adéquate. Ce balisage est extrêmement important car il permet d'avoir une base de connaissance optimum en cas de recherche.
Avez-vous remarqué comment étaient postées les autres questions ?

Lisez ce fil pour savoir quelle balise utiliser : https://forum.openoffice.org/fr/forum/s ... html#27295

N'oubliez pas que les termes "Macro" ou "OpenOffice" ne doivent pas être employés car il sont implicites. Essayez de synthétiser au mieux ce que vous cherchez à faire.

Un titre accrocheur vous permettra d'une part d'être aidé plus rapidement et d'autre part, d'enrichir notre base de connaissances.

Merci de votre collaboration.
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
 
Message(s) : 4911
Inscrit le : 28 Août 2010 09:45

Re: [Writer] remplir un champ avec signet en VB6

Messagepar Noonours » 02 Jan 2018 17:50

Bonjour

Une proposition qui permet de déterminer si un signet "annee" est présent dans ton document, et change son intitulé:

Code : Tout sélectionner   AgrandirRéduire
sub RechercheSignet()
   
   oDoc = thiscomponent
   sNom = "annee"
   LesSignets = oDoc.Bookmarks
   if LesSignets.hasByName(sNom) then
    signet = LesSignets.getByName(sNom)
    signet.Anchor.String = "Bla Bla Bla"
   end if

end sub

(Si j'ai bien compris ta requête... mais ça ressemble un peu à la question qui tue ! :mrgreen: )

COOordialement,
Noonours

N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 5.4.5.1 Stable et AOO 4.1.5 sous Win 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 264
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

Re: [Writer] remplir un champ avec signet en VB6

Messagepar liger » 03 Jan 2018 09:01

Bonjour

Merci pour ta réponse.

Je teste dans la journée mais je te confirme déjà que tu as bien compris ma demande et je t'en remercie.

En plus cela me donnera une piste pour remplacer un signet par un tableau.

Cordialement.
OpenOffice 4.1.4 Windows 7
liger
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 02 Jan 2018 15:06

Re: [Writer] remplir un champ avec signet en VB6

Messagepar liger » 03 Jan 2018 15:00

Je viens de tester ton code mais j'ai un message d'erreur dès le début.
Je met ci-dessous tout mon code :
Code : Tout sélectionner   AgrandirRéduire
Public oSM  As Object
Public oDesk As Object
Public oDoc As Object
Public doc As Object
Set oSM = CreateObject("com.sun.star.ServiceManager")
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
Set doc = oDesk.loadComponentFromURL("file:///"nom_de_mon_fichier", "_blank", 0, arg())
oDoc = thiscomponent
sNom = "annee"
LesSignets = oDoc.Bookmarks
if LesSignets.hasByName(sNom) then
    signet = LesSignets.getByName(sNom)
    signet.Anchor.String = "Bla Bla Bla"
end if

Quand j'arrive à la ligne oDoc=ThisComponent j'ai un message d'erreur sur ThisComponent (voir message d'erreur en pièce jointe).
Avez vous une idée du problème ou est ce que j'ai oublié de déclarer quelque chose.
Je vous remercie par avance des pistes ou aide que vous pourrez m'apporter.
Cordialement.
Pièces jointes
message_erreur.JPG
message_erreur.JPG (11.69 Kio) Consulté 314 fois
OpenOffice 4.1.4 Windows 7
liger
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 02 Jan 2018 15:06

Re: [VB] [Writer] remplir un champ avec signet en VB6

Messagepar Noonours » 03 Jan 2018 23:43

Bonjour

liger a écrit:Je commence à utiliser OpenOffice [...] sous Writer [...] plusieurs champs déjà crées dans un document Writer existant [...]

Pourtant dans ta capture d'écran je vois:
Microsoft VB6.png
Microsoft VB6.png (13.49 Kio) Consulté 292 fois

Quelle suite utilises-tu? Si tu essayes de faire tourner une macro fonctionnant avec OpenOffice/Libre Office dans un document Micr*soft tu vas t'arracher quelques cheveux... Comme cité plus haut, c'est la "question qui tue" car ces deux suites ne sont PAS compatibles. :?
liger a écrit: Je met ci-dessous tout mon code :

Plutôt qu'un bout de code, fournis aux contributeurs un document dépersonnalisé (cf le lien dans ma signature) afin d'obtenir une réponse adaptée à ton cas.

COOordialement,
Noonours

N’HÉSITEZ SURTOUT PAS À JOINDRE UN FICHIER

LibO 5.4.5.1 Stable et AOO 4.1.5 sous Win 10
LibO 5.0.6.3 (obligation de version) sous Win 7
Avatar de l’utilisateur
Noonours
Membre cOOnfirmé
Membre cOOnfirmé
 
Message(s) : 264
Inscrit le : 11 Mai 2013 01:11
Localisation : Aix en Provence

Re: [VB] [Writer] remplir un champ avec signet en VB6

Messagepar liger » 04 Jan 2018 09:30

Bonjour

Merci pour tout ceux qui ont pris le temps de regarder mon problème.

J'ai trouvé une solution en utilisant une ancienne dll qui se nomme OOWRITVB.dll et qui me permet de faire le lien entre mon code en VB6 et open office.

Code : Tout sélectionner   AgrandirRéduire
If Writer.Selection.Bookmarks.HasByName("annee") = True Then
    Writer.Selection.GoToBookmark ("annee")
    Writer.Selection.TypeText Format(Date, "yyyy")
End If


Pour l'instant cela fonctionne donc je clôture le sujet.
OpenOffice 4.1.4 Windows 7
liger
Fraîchement OOthentifié
 
Message(s) : 4
Inscrit le : 02 Jan 2018 15:06

Re: [Résolu][VB] [Writer] remplir un champ avec signet en VB

Messagepar Dude » 04 Jan 2018 15:54

Mauvais balisage : [Writer] signifie que tu programmes sous OpenOffice, ce qui n'est pas le cas.

La modération a écrit:Correction du titre effectuée


Comme d'habitude, si tu utilises un langage externe, il suffit de "fabriquer" ton propre document.
Le format ODF est très simple à lire et à écrire.
Exemple en PowerShell : http://beaussier.com/sections/viewtopic.php?f=7&t=1583

Bref, pas besoin d'une quelconque DLL.
Avatar de l’utilisateur
Dude
Grand Maître de l'OOffice
Grand Maître de l'OOffice
 
Message(s) : 20092
Inscrit le : 03 Mars 2006 08:45
Localisation : 127.0.0.1


Retour vers Macros et API

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)