[Résolu] Macro enregistrer sous  Sujet résolu

Vous pouvez poser ici les questions à propos de LibreOffice/OOo Calc et répondre aux questions des autres membres ...

[Résolu] Macro enregistrer sous  Sujet résolu

Messagepar shadowseb » 29 Août 2010, 02:48

Ma feuille original étant sous excel, j'avais cru bon de récupérer le code de ma macro qui fessait en sorte que ça enregistrait le fichier comme en utilisant le menu fichier, enregistrer sous, et comme nom, le contenue de 2 cellules précise. Seulement voilà ça ne fonctionne pas, et j'ai parcourru google avec mon problème et rien de bien concret ne m'a aider. À savoir que je ne tient pas apprendre à programmer, dans le sens qu'une fois ce projet terminer, je ne retravaillerai pas vraiment avec, au sens que mes besoins sont limiter à cette fiche.

Ceci est ma macro originale dans Excel:
Code: Tout sélectionner
    Sub Enregistresous()
    info1 = Sheets("Principale").Range("D2")
    info2 = Sheets("Principale").Range("L2")
    enregistre = ActiveWorkbook.Path & "\" & info1 & " - " & info2 & ".xlsm"
    ThisWorkbook.SaveAs (enregistre)
    End Sub
 


Voilà mon fichier:
http://www.cijoint.fr/cjlink.php?file=c ... zHV9bM.ods

Windows XP pro, OpenOffice version 3.0

Merci infiniement encore une fois!

Seb

PS: Celle-ci est ma dernière question, après mon projet est terminé :)

-- Dim Aoû 29, 2010 5:28 pm --

En cherchant, j'ai trouvé plus ou moins ce que je cherchais, je l'ai adapté à mes besoin. La seule chose que je n'arrive pas à faire, c'est de sauvegarder le fichier dans le dossier où il se trouve; sachant que se sera sans un dossier sur une clef USB, je ne peut faire de chemin absolu.

Code: Tout sélectionner
Dim oDoc as Object
Dim sD1 as String
Dim sD2 as String
Dim sPathBackupFolder as String

Dim filespec As string
Dim myfilename As String
Dim oFeuille As Object
Dim sNomFeuille As String
oDoc = ThisComponent

sPathBackupFolder = "\\MonServeur\Sauvegarde$\"

oFeuille = oDoc.getCurrentController().getActiveSheet() 'affecte le nom de la feuille active à la variable feuille

sNomFeuille = oFeuille.getName() 'récupère le nom de la feuille

sD1 = oFeuille.GetCellRangeByName("D1").String 'récupère le texte de la cellule D1

sD2 = oFeuille.GetCellRangeByName("D2").String  'récupère le texte de la cellule D2


'copie de sauvegarde avec date
 'Chemin et nom de fichier composé

myfilename = sPathBackupFolder+sD1+"_"+sD2+"_"+Day(Date)+Month(Date)+Year(Date)+"_"+sNomFeuille+".ods"

'Enregistrer sous

dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = ConvertToUrl(myfilename) 'On converti le chemin
args1(1).Name = "FilterName"
args1(1).Value = "calc8"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
Dernière édition par shadowseb le 31 Août 2010, 23:47, édité 1 fois.
shadowseb
Jeune membre
 
Messages: 28
Inscription: 31 Juil 2009, 22:26
Version Excel: 2007

Re: Macro enregistrer sous

Messagepar shadowseb » 31 Août 2010, 23:46

Étant donné que la majorité des gens d'ici utilise excel et non Calc, j'ai du chercher ailleur la réponse que je partage avec vous.

Code: Tout sélectionner
function getFullRep(sPath As String) As String
Dim cpt As Integer
Dim buf As String
Const SLASH = "/"
   buf = ""
   for cpt = Len(sPath) to 1 step -1
      if Mid(sPath, cpt, 1) = SLASH then
          buf = Left(sPath, cpt)
         exit for
       end if
   next
   getFullRep = buf
end function


Sub Main
   
Dim oDoc as Object
Dim sG2 as String
Dim sO2 as String
Dim sPathBackupFolder as String

Dim filespec As string
Dim myfilename As String
Dim oFeuille As Object
Dim sNomFeuille As String
oDoc = ThisComponent

sPathBackupFolder = getFullRep (oDoc.location)

oFeuille = oDoc.getCurrentController().getActiveSheet() 'affecte le nom de la feuille active à la variable feuille

sNomFeuille = oFeuille.getName() 'récupère le nom de la feuille

sG2 = oFeuille.GetCellRangeByName("G2").String 'récupère le texte de la cellule D1

sO2 = oFeuille.GetCellRangeByName("O2").String  'récupère le texte de la cellule D2


'Chemin et nom de fichier composé

myfilename = sPathBackupFolder+sG2+" - "+sO2+".ods"

'Enregistrer sous

dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = ConvertToUrl(myfilename) 'On converti le chemin
args1(1).Name = "FilterName"
args1(1).Value = "calc8"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())



End Sub


Sait-on jamais peut-être que se sera utile à d'autre
shadowseb
Jeune membre
 
Messages: 28
Inscription: 31 Juil 2009, 22:26
Version Excel: 2007


Retourner vers Calc

 


  • Sujets similaires
    Réponses
    Vus
    Dernier message

Utilisateurs en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités