1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| 'Copie d'une feuille d'un classeur vers un nouveau classeur
Sub CopieFeuilleActive_NouveauClasseur()
Dim oFeuilleSource As Object, oFeuilleDest as Object
Dim oFrame As Object, oDisp As Object
Dim oCalcSource As Object, oCalcDest As Object
Dim args(5) As New com.sun.star.beans.PropertyValue
'Document source
oCalcSource = thiscomponent
'Je désigne la feuille source et l'active(si elle ne l'est pas)
oFeuilleSource = oCalcSource.getSheets.getByName("Feuille1")
oCalcSource.CurrentController.ActiveSheet = oFeuilleSource
'Copie
oFrame = oCalcSource.CurrentController.Frame
oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
oDisp.executeDispatch(oFrame, ".uno:SelectAll", "", 0, Array())
oDisp.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())
'J'ouvre un nouveau document Calc
oCalcDest = StarDesktop.LoadComponentFromURL("private:factory/scalc","_blank",0,array())
'Je désigne la feuille qui va recevoir les données
oFeuilleDest = oCalcDest.getSheets.getByName("Feuille1")
'Activation de cette feuille
oCalcDest.CurrentController.ActiveSheet = oFeuilleDest
'Selection de la frame
oFrame = oCalcDest.CurrentController.Frame
oDisp = createUnoService("com.sun.star.frame.DispatchHelper")
'Propriété du collage spécial
args(0).Name = "Flags"
args(0).Value = "SVDT"
args(1).Name = "FormulaCommand"
args(1).Value = 0
args(2).Name = "SkipEmptyCells"
args(2).Value = false
args(3).Name = "Transpose"
args(3).Value = false
args(4).Name = "AsLink"
args(4).Value = false
args(5).Name = "MoveMode"
args(5).Value = 4
oDisp.executeDispatch(oFrame, ".uno:InsertContents", "", 0, args())
End Sub |
Partager