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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| Sub OuvreOOoCalc()Rem
Rem Charger un document calc
Rem
Dim oSM, ODesk, oClasseur, oFeuille, oCurseur As Object 'Les objets de base de OOo
Dim OpenPar(2) As Object 'Un tableau VB
Dim T As Double
T = Timer
'Instancie OOo : ces deux lignes sont obligatoires avec VB dans tout code !
Set oSM = CreateObject("com.sun.star.ServiceManager")
Set ODesk = oSM.createInstance("com.sun.star.frame.Desktop")
'On appelle la fonction setOOoProp définie précédemment pour récupérer la structure
Set OpenPar(0) = setOOoProp(oSM, "ReadOnly", True)
Set OpenPar(1) = setOOoProp(oSM, "Password", "secret")
Set OpenPar(2) = setOOoProp(oSM, "Hidden", False)
T1 = Timer
'On appelle la fonction OOo loadComponentFromURL, en lui passant en
'dernier paramètre le résultat de la fonction setOOoProp
Set oClasseur = ODesk.loadComponentFromURL("file:///M:/test/test.ods", "_blank", 0, OpenPar)
T2 = Timer
Set oFeuille = oClasseur.getSheets.getByName("DEMILUNEF_3")
Set oCurseur = oFeuille.createCursor
oCurseur.gotoEndOfUsedArea (False)
Dim Longueur As Integer
Longueur = oCurseur.RangeAddress.EndRow
Dim a As Long
Dim PlageCellules As Object
Set PlageCellules = oFeuille.getCellRangeByName("A2:A" & Longueur + 1)
Dim Plages As Object
Set Plages = oClasseur.createInstance("com.sun.star.sheet.SheetCellRanges")
Dim index As Integer
index = 0
Dim Signal1() As Variant
Dim FirstArray(1)
ReDim Signal1(Longueur - 1)
Dim Signal As Variant
Signal = Array(FirstArray, Signal1)
T3 = Timer
Signal = PlageCellules.getDataArray()
T4 = Timer
While index < Longueur
Set Cellule = oFeuille.getCellByPosition(0, index + 1)
Signal1(index) = Cellule.getString()
index = index + 1
Wend
T5 = Timer
Debug.Print "Initialisation : " & (T1 - T)
Debug.Print "Ouverture Classeur : " & (T2 - T1)
Debug.Print "Initialisation variables : " & (T3 - T2)
Debug.Print "Lecture par tableaux : " & (T4 - T3)
Debug.Print "Lecture cellule par cellule : " & (T5 - T4)
'Ferme le document
oClasseur.Close (True)
Set oClasseur = Nothing
End Sub
Function setOOoProp(oSM, cName, uValue) As Object
Dim oPropertyValue As Object
Set oPropertyValue = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
oPropertyValue.Name = cName
oPropertyValue.Value = uValue
Set setOOoProp = oPropertyValue
End Function |
Partager