Код работает в LibreOffice 5 не работает в LibreOffice 6

Автор dvv, 27 сентября 2019, 17:11

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

dvv

Открываю xls файл через COM из 1C.

Один и тот же код (привожу кусок):

Desktop = ServiceManager.createInstance("com.sun.star.frame.Desktop");
    Props = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Props.Name = "AsTemplate";
    Props.Value = True;
    Args = New COMSafeArray("VT_VARIANT", 2);
    Args.SetValue(0, Props);
    Props1 = ServiceManager.Bridge_GetStruct("com.sun.star.beans.PropertyValue");
    Props1.Name = "Hidden";
    Props1.Value = True;
    Args.SetValue(1,Props1);
    Document = Desktop.LoadComponentFromURL(ConvToURL(filePath), "_blank", 0, Args);

работает в версии 5.0.3.2 и не работает в версии 6.2.3.2, в 6 LoadComponentFromURL выдает ошибку "type detection failed"   

ConvToURL - функция преобразования имени файла к нужному для либры виду

Кто-нибудь может подсказать что не так?

mikekaganski

#1
Цитата: dvv от 27 сентября 2019, 17:11ConvToURL - функция преобразования имени файла к нужному для либры виду

Есть встроенная функция для этого: ConvertToURL.

А без макроса ЛО открывает этот файл?
С уважением,
Михаил Каганский

dvv

Цитата: mikekaganski от 27 сентября 2019, 17:15А без макроса ЛО открывает этот файл?
конечно открывает, обычный ексель

mikekaganski

#3
Только что проверил код в Basic:
Sub OpenXLS
Dim p0 As New com.sun.star.beans.PropertyValue, p1 As New com.sun.star.beans.PropertyValue, args(1), doc As Object
p0.name = "AsTemplate"
p0.Value = True
p1.name = "Hidden"
p1.Value = True
args(0) = p0
args(1) = p1
doc = StarDesktop.loadComponentFromURL(ConvertToURL("D:\Downloads\документ.xls"), "_blank", 0, args)
doc.close(True)
End Sub

Он отработал без ошибок. Если у Вас аналогичный код в 1С не работает (а приведённый Basic работает из ЛО после указания своего корректного пути к документу), можно предположить, что он некорректно настраивает окружение ЛО (так что ЛО не загружает модули). Ну, или
Цитата: dvv от 27 сентября 2019, 17:11ConvToURL - функция преобразования имени файла к нужному для либры виду
делает что-то не так.
С уважением,
Михаил Каганский