Адаптация макросов VBA из Excel в OpenOffice

Автор Kosh, 12 мая 2016, 12:40

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

SHip

Теперь выдает:
Ошибка времени выполнения Basic.
Вызвано исключение
Type: com.sun.star.io.IOException
Message: SfxBaseModel::impl_store <file:///~/Inst/%D0%9F%D0%95%D0%A0%D0%95%D0%A7%D0%95%D0%9D%D0%AC%20%D0%A0%D0%90%D0%91%D0%9E%D0%A2_05.02.2020%2009.49.25.xls> failed: 0x507(Error Area:Io Class:Access Code:7).

Вы уж не судите строго. Просто для меня программирование дремучий лес.

bigor

Укажите в iName вместо "~/Inst/", то что вам нужно (по первоначальному примеру "C:\temp\")
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

SHip

Bigor большое спасибо. Всё заработало как надо.

economist

SHip - обновите LibreOffice, у вас какая-то промежуточная версия. 

Работающий файл с макросом,  все ОК в Calc 5472 6332 6334 - вложен.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

SHip

economist спасибо за совет.
Версия действительно старая. Обновил.

SHip

Доброго дня.

Подскажите, как в название добавить еще и значение из ячейки ?

Сейчас: 16.02.2020 15.20.54 - Документ
Нужно:  16.02.2020 15.20.54 "значение из ячейки" - Документ

Sub Macro1()
    Dim iName$, iDate$
   dim args1(0) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "FilterName"
    args1(0).Value = "MS Excel 97"
    iDate = Now 'узнаем текущую дату и время
    iDate = Replace(iDate, ":", ".") 'заменяем двоеточия на точку
    iName = ThisComponent.Title 'узнаём имя файла
    iName = Left(iName, Len(iName) - 4) 'убираем расширение файла
    iName = "d:\Документы\Акты\" & iDate & " - " & iName &  ".xls" 'полное имя файла
    ThisComponent.StoretoURL(ConverttoURL(iName),args1())
End Sub

bigor

Берет текст из А1 первого листа
iName = "d:\Документы\Акты\" & iDate & " - " & iName & ThisComponent.Sheets(0).getCellByPosition(0,0).string & ".xls" 'полное имя файла
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

SHip


Chaikin

Здравствуйте... Помогите адаптировать макрос "открытия файла", при нажатии на ячейку "А" на просмотр выводится файл, под линукс (Компонент: Calc
Версия продукта: 5.x
Сборка: Версия: 5.3.6.1 ID сборки: 5.3.6.1-10.el7
ОС: Linux 3.10 CentOS) в Windows работает без нареканий.

bigor

#24
Цитата: Chaikin от 25 февраля 2020, 07:34в Windows работает без нареканий.
Потому что линукс не знает где вам виндовую библиотеку взять Private Declare Function ShellExecute Lib "shell32"...

Я только не понимаю, зачем вам ShellExecute?

Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Chaikin

Уважаемый Bigor, в винде щелкнув ПКМ по ячейке ( допустим А4), открывается файл "с:/НоваяПапка/5831284.*", потому ShellExecute ... а в линуксе как реализовать ??? Спасибо
 

bigor

Открывается где? Точнее в чем? Блокноте? Или программе которая привязана к расширению файла? На каждом компьютере получается все по разному.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Chaikin

Уважаемый Bigor, под Win если *.jpg,png, открывается в просмотрщике изображений, *.pdf в адобе, *.txt в блокноте...получается "Или программе которая привязана к расширению файла" (с)

bigor

Вы даже не подозреваете дыру какого размера вы создали в системе. Если к примеру вам в папку положить файлик Дата_из_ячейки.cmd с содержимым типа rd *.* или format c:
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

bigor

Посмотрел linux, для открытия вышеперечисленных типов файлов достаточно приложения Okular. С учетом встроенной в SB функции shell у вас будет что-то типа:
Shell("okular " & FullPath)
еще вариант открывать найденные файлы в LO
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут