Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

28 Январь 2020, 18:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Запустить макрос из Python в Libre calc  (Прочитано 972 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 832


« Ответ #15: 10 Январь 2020, 10:11 »

А теперь с новыми поправками от Rafic пробовали?
Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #16: 10 Январь 2020, 13:05 »

Нашел ребята , позже отпишусь )
Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #17: 10 Январь 2020, 15:01 »

Ребята , и еще один вопрос
Немогу найти , как создать файл с именем ? , ну какбы открыть файл новый файл  , уже с таким именем? и после макроса сохранить его ?
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 832


« Ответ #18: 10 Январь 2020, 15:52 »

Если использовать вариант предложенный economist то в нем уже открывается созданный файл с определенным именем. Если вы хотите открывать файл из макроса, то как-то так
Код:
OpenF = StarDesktop.loadComponentFromUrl(ConverttoURL(sPath)&"имя файла.ott","_blank",0,dimArray())
Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #19: 13 Январь 2020, 12:48 »

Ребята , я понимаю , я уже достал со своими тупыми вопросами
я вроде-бы разобрался

я открываю LO через консоль
я открываю макрос через консоль
и теперь последний вопрос , как сохранить этот файл где сработал макрос , через консоль ?
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 832


« Ответ #20: 13 Январь 2020, 12:55 »

и теперь последний вопрос , как сохранить этот файл где сработал макрос , через консоль ?
В макросе прописываете в конце сохранение файла и закрытие его если надо
Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #21: 13 Январь 2020, 13:02 »

и теперь последний вопрос , как сохранить этот файл где сработал макрос , через консоль ?
В макросе прописываете в конце сохранение файла и закрытие его если надо

а вы можете дописать это  ? , я в басике вообще не разбираюсь ((


Код:
private sub main
    dim p$, f$, t$, rw&, cl&, a(), i&
    dim wb as object, ws as object, c as object
   
    p="C:\Users\g.nerovniy\Desktop\log\"
    f=dir(p+"*.txt")
    if len(f) then wb=thiscomponent else exit sub
   
    do           
       wb.sheets.insertnewbyname(f,i)
       ws=wb.sheets(i):i=i+1:rw=0
       open p+f for input as #1
            do while not eof(#1)
               line input #1, t
               a=split(t)
               for cl=0 to ubound(a)
                   c=ws.getcellbyposition(cl,rw)
                   select case cl
                       case 0 to 2, 5 to 7
                          c.setvalue(a(cl))
                       case else
                          c.setstring(a(cl))
                   end select
               next
               rw=rw+1
            loop
       close #1
       setFormat ws, rw
       f=dir
    loop while len(f)
    oDoc = ThisComponent

oDoc.Sheets.removeByName("Sheet1")
end sub
 
sub setFormat(ws as object, rw&)
    dim r as object, cf as object
 
    r=ws.getcellrangebyname("f1:f"+rw)
    cf=r.conditionalformat   
   
    condFormat "0.95", "" , "Good", 3, cf
    condFormat "0.9", "0.95", "Neutral", 7, cf
    condFormat "0.85", "0.8999", "Bad", 7, cf
    condFormat "0", "0.85", "Error", 7, cf
   
    r.conditionalformat=cf
End Sub
 
sub condFormat(formula1$, formula2$, style$, o&, cf as object)
    dim p(3) As new com.sun.star.beans.PropertyValue
    p(0).name="StyleName"
    p(0).value=style
    p(1).name="Operator"
    p(1).value=o
    p(2).name="Formula1"
    p(2).value=formula1
    if len(formula2) then
       p(3).name="Formula2"
       p(3).value=formula2
    end if       
    cf.addnew(p)

end sub
Sub NDRowsDelete
 odoc=thiscomponent
 oSheet = oDoc.CurrentController.getActiveSheet()
 myrows=oSheet.getrows
 
 rowmax=3000
 rowmin=0
 
 For i=rowmax To rowmin step -1
 textnd = osheet.getcellbyposition(5,i).string
    If textnd >="0,95" Then
      myrows.removebyindex(i,1)
    End if   
 Next i
 
End Sub





путь на рабочий стол


Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 832


« Ответ #22: 13 Январь 2020, 13:28 »

Как то так:
После последнего dim
Код:
Dim args(0) As New com.sun.star.beans.PropertyValue

Перед End Sub
Код:
oDoc.storeToURL("file:///c:/путь к рабочему столу/имя файла.odt", args())
oDoc.close(true)
Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #23: 13 Январь 2020, 14:35 »

не получается , и еще пробовал в самое начало вставлять Dim args(0) As New com.sun.star.beans.PropertyValue


* photo_2020-01-13_16-33-56.jpg (82.79 Кб, 759x676 - просмотрено 8 раз.)
Записан
Bigor
Опытный пользователь
***
Offline Offline

Пол: Мужской
Сообщений: 832


« Ответ #24: 13 Январь 2020, 15:37 »

1. У вас путь к файлу задан неправильно. Или сделайте как у меня в #22 только подставьте путь правильный и имя файла или как в #18 вместо sPath пропишите путь в windows формате.
2. Не нужен 0 в скобках args. Я исправил свой ответ, но вы скопировали его быстрее Улыбка


ps и определитесь куда вставлять код. Вы по очереди вызываете main и NDRowsDelete? тогда код в последнюю вызываемую процедуру и dim в нее же
« Последнее редактирование: 13 Январь 2020, 15:47 от Bigor » Записан
georgiy123
Участник
**
Offline Offline

Сообщений: 20


« Ответ #25: 17 Январь 2020, 07:51 »

Ребята , всем спасибо , написал , разобрался )
думаю создать новую тему , и выложить туда код )
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!