[Решено] Calc: Как программно проверить/изменить значение свойства в Параметрах?

Автор eeigor, 12 апреля 2020, 11:19

0 Пользователи и 1 гость просматривают эту тему.

mikekaganski

С уважением,
Михаил Каганский


rami

sokol92, в вашем макросе ShowGlobalSheetSettings из-за возникающей ошибки (конкатенации массива и строки) происходит утрата ещё одного свойства UserLists. UserLists единственное свойство типа массив, которое может вызвать ошибку, поэтому лучше убрать On Local Error Resume Next и сделать проверку на массив а затем либо превратить массив в строку либо вместо значения свойства выводить сообщение о размерности массива, например: UserLists = <массив из 3 элементов>. Игнорирование ошибок On Local Error Resume Next предназначено для наладки кода, когда нужно пройти по коду не спотыкаясь на ошибках.

Строка кода value="<is not set>" не имеет смысла, так как она всегда перезаписывается

sokol92

Спасибо! Прилагаю исправленный вариант:

Sub ShowGlobalSheetSettings()
 Dim oSet, s as String, oProp, value
 oSet=createUnoService("com.sun.star.sheet.GlobalSheetSettings")  
 For Each oProp In oSet.PropertySetInfo.Properties
   value=oset.GetPropertyValue(oProp.name)
   If IsArray(value) Then
     value="(" & join(value, ";" & chr(10)) & ")"
   End If  
   s=Iif(s="", s, s & chr(10)) & oProp.name & "=" & value
 Next oProp
 Msgbox s,,"GlobalSheetSettings"
End Sub
Владимир.