Comment coder dans calc fermeture fichier ouvert?

Bonjour, dans une macro je n’arrive pas à coder la fermeture d’un fichier ouvert. Dans l’extrait de code suivant :

Dim UnDocument As Object 
Dim AdresseDoc As String 
AdresseDoc = "file:///C:/Users/PJ/Desktop/Fichiers/CE.ods" 
UnDocument = StarDesktop.LoadComponentFromURL(AdresseDoc,"_blank",0, PropFich)
UnDocument.Close(True)

la partie suivante pose problème :

UnDocument = StarDesktop.LoadComponentFromURL(AdresseDoc,"_blank",0, PropFich)

Nota : Je suis en version travail Libre office 4.3.7.2

Pourriez-vous m’aider à résoudre cela ?

Par avance merci

Bonjour,

PropFich n’est pas déclaré. Le paramètre attendu par .LoadComponentFromURL() est un tableau de paramètres. Si celui-ci est vide (pas de paramètres utiles à passer), vous pouvez passer le résultat de la fonction Array() :

UnDocument = StarDesktop.LoadComponentFromURL(AdresseDoc,"_blank",0, Array())

Cordialement,

Merci d’avoir réagi.
Si je fais ce que vous dites, le fichier (CE.ods) ouvert s’ouvre à nouveau (en lecture seule forcément), puis se ferme mais au final le fichier reste ouvert. Comment résoudre cela ?

Bonjour

Le programme ne fait que ce qui est demandé : ouverture puis fermeture du classeur. S’il était déjà ouvert il ouvre (en lecture seule en effet) une nouvelle instance du document, puis ferme cette dernière. Il laisse donc normalement le fichier déjà ouvert. La question est pourquoi rouvrir un document déjà ouvert ?

Cordialement

Bonjour,
Le fichier est déjà ouvert car un traitement par code a était fait dessus avant mais il n’est plus à ce stade le classeur actif.
Cordialement

@PJLO

Compte tenu des précisions apportées, la solution est de ne pas rouvrir le classeur s’il est déjà ouvert. La procédure suivante réalise cela en s’appuyant sur une fonction disponible dans la librairie Tools de LibreOffice.

sub OuvrirClasseur

dim oDoc as object
dim sUrl as string

sUrl = "file:///C:/Users/PJ/Desktop/Fichiers/CE.ods"

GlobalScope.BasicLibraries.LoadLibrary("Tools")
oDoc = OpenDocument(sUrl, array())

end sub

À l’issue du traitement,

  • si le document n’était pas ouvert, il l’est et il est accessible via la variable oDoc.
  • si le document était ouvert, il n’est pas rouvert et il est accessible via la variable oDoc.

Cordialement

Un grand merci.
Si je rajoute la ligne suivante oDoc.close(True)
au code qui vient d’être communiqué je parviens à fermer mon fichier.