Philippe Allart a écrit :
Bernard Marcelly a écrit :

Une autre solution est de recharger le document, ce qui n'a pas l'air possible avec l'API.
J'avais tenté un monDocument.reload() sans succès.

L'enregistreur de macros peut le faire, mais pour
éviter le message de confirmation on doit lui faire croire que rien n'est modifié:

monDocument.setModified(False)
dim dispatcher as object
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(monDocument.CurrentController.Frame, ".uno:Reload", "", 0, Array())

Il ne faut pas que la macro soit dans le document, sinon elle est interrompue par le Reload.

Le rechargement a l'air de bien se passer, mais j'ai un plantage sur le StoreToURL suivant. Il semble que ce soit l'objet monDocument qui a changé.
Maintenant j'ai deux options qui marchent:

Function Recharger(monDocument as Object) as Object
dim dispatcher as object
dim URL as String
Dim propFich()
dim option as integer

option = 2

   monDocument.setModified(False)
   if option = 1 then

      URL = monDocument.URL
      monDocument.close(true)
Recharger = starDeskTop.LoadComponentFromUrl(URL, "_blank", 0, propFich)

      else

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dispatcher.executeDispatch(monDocument.CurrentController.Frame, ".uno:Reload", "", 0, Array())
      Recharger = thisComponent
      end if

end function

La deuxième option exige que monDocument ait le focus.

Merci de ton aide,

Ph.
S'il n'y a pas de raisons de rester dans le même classeur, une des solutions est de créer de nouveaux documents sur lesquels on travaille et que l'on ferme ensuite. Par exemple :

Sub Main
        Dim args(0) as new com.sun.star.beans.PropertyValue
        dim oClasseur as object
        dim sAdresseClasseur as string
        dim i as integer
        
        for i = 0 to 5
        'ouverture d'un nouveau classeur
        oClasseur = CreerClasseur("nom_modele.ots")
        'Traitements

        'sauvegarde et fermeture
        sAdresseClasseur = ConvertToURL("/chemin/test" + i + ".ods")
        oClasseur.storeAsURL(sAdresseClasseur, args())
        oClasseur.close(True)
        next i
        
End Sub

Function CreerClasseur(sNomModele as string) as object
        dim sAdresseMod as string
        dim propFich() as New com.sun.star.beans.PropertyValue
                
sAdresseMod = convertToURL("/home/gerard/donnees/param/openoffice/modeles/Vaournet/" + sNomModele) CreerClasseur = StarDesktop.LoadComponentFromURL(sAdresseMod, "_blank", 0, propFich())
End Function

--
Gérard LANOYE, le bourg, 81140 VAOUR
Tél 05 63 56 37 20
Mail [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à