Je me sers de la fonction de publipostage pour rédiger des documents et les données sont un fichier Calc. Lors de la rédaction, j'ouvre un document Writer "Sans Nom" (depuis une trame .ott).
Objectif final: enregistrer le document Writer "Sans nom" en cours de travail dans un dossier. Je souhaiterai que le document Writer soit automatiquement nommé avec le résultat de la cellule RO2 de la feuille champs du document Données.
Le dossier dans lequel doit s'enregistrer le document Writer portera un nom qui est identique au résultat de la cellule ED2 du fichier Données au format JJ MMMM AAAA. C'est moi qui crée le dossier.
J'ai essayé de m'inspirer de cette discussion https://forum.openoffice.org/fr/forum/v ... le#p319482
Mes difficultés :
1/ Je ne sais pas comment indiquer l'adresse du fichier Données sans enregistrer au préalable dans le même dossier le document Writer. En effet, ma macro reprend l'adresse URL du document Writer pour trouver le fichier Données alors que par essence le document Writer est sans nom car non enregistré et donc dans aucun fichier.
2/ Pour essayer d'avancer et vérifier si le reste fonctionne, j'ai enregistré mon Document Writer dans le même dossier que le fichier Données. J'obtiens une erreur avec indication de la dernière ligne de la macro : "Erreur d'exécution BASIC.
Une exception s'est produite :
Type: com.sun.star.io.IOException
Message: SfxBaseModel::impl_store <file:///C:%5CUsers%5Ccelin%5CdesktopRG%20123%20%20.odt> failed: 0x507(Error Area:Io Class:Access Code:7)."
Je n'arrive pas à comprendre ce que signifie cette erreur.
3/ est-il possible de ne pas ouvrir le document données car en principe il reste ouvert.
3/ je ne sais pas comment indiquer dans l'adresse que le nom du dossier de destination sera égal au résultat de ED2 du fichier Données. Est-ce faisable ?
Code : Tout sélectionner
REM ***** BASIC ***** https://forum.openoffice.org/fr/forum/viewtopic.php?f=8&t=59134&p=319482&hilit=enregistrer+nom+fichier+cellule#p319482
Sub Main
Dim oDoc as Object,oDocOrigine as Object, Rep as String, AdresseDoc as String, F1 as Object
Dim DestURL As String
Dim Args () As new com.sun.star.beans.PropertyValue
Dim U as Variant, n as long
oDoc = thisComponent
U = split(oDoc.Url, "/")
n = Ubound(U)
U(n) = "Données.ods"
DestURL = join(U, "/")
oDocOrigine = StarDesktop.loadComponentFromURL(DestURL,"_blank",0 ,Args())
F1 = oDocOrigine.Sheets.GetByName("Champs")
Rep = F1.getCellRangeByName("RO7").String
AdresseDoc = ConvertToURL("file:///C:\Users\celin\desktop" & Rep & ".odt")
oDoc.storeToURL(AdresseDoc, Array() )
End Sub
Bien cordialement