1
Я попытался получить доступ к листу в документе ODS. Все работает нормально - я могу получить доступ к именованным диапазонам и т. Д., Но если я попытаюсь получить доступ к простой ячейке с помощью индексов Row/Col, я получаю сообщение об ошибке ...Автоматизация LibreOffice Calc извне через COM
Код является базой Lotus Notes (из-за вариантов. ..)
Dim rowFieldNameIndex As Integer
Dim rowStartMergeIndex As Long
Dim I As Integer
Dim oCell As Variant ' Cell object.
Dim oSheet As Variant
Dim FieldName As String
rowFieldNameIndex = Val(GetOODocProperty (pOOObj, "FieldNameRow"))
rowStartMergeIndex = Val(GetOODocProperty (pOOObj, "MergeStartRow"))
'--> both working
If Not pOOobj Is Nothing Then
Set oSheet = pOOobj.Sheets(0)
MsgBox pOOobj.Sheets.Count 'works
MsgBox oSheet.CellsEnumeration.Count
'getCellByPosition(col,row)
Set oCell = oSheet.getCellByPosition(1, 1) 'ERROR?!?!? getCellByPosition is no tan Instance Member??? so how can I access a Cell
OCell.String = "Test"
End If
Public Function GetOODocProperty (pOODoc As Variant, ByVal strVarName) As String
Dim userProps As Variant
On Error Resume Next
'get UserDefined Properties
Set userProps = pOODoc.DocumentProperties.getUserDefinedProperties()
'Try to Remove; on Error Property doesen't exists yet
If userProps.getPropertySetInfo().hasPropertyByName(strVarName) = True Then
'http://api.openoffice.org/docs/common/ref/com/sun/star/beans/XPropertySet.html
GetOODocProperty = userProps.getPropertyValue(strVarName)
Else
GetOODocProperty = ""
End If
End function
В 'Sheets (0)' синтаксис кажется конкретного языка. Я думаю, 'getSheets(). GetByIndex()' или 'getSheets(). GetByName()' более надежны для большинства языков. Обычно то, что я делаю, это посмотреть, как это делается на Java, а затем применять это как можно ближе к любому языку, на котором работает UNO, в котором я работаю. –