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

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

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

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2 3   Вниз
  Печать  
Автор Тема: Аггрегация папки с файлами в итоговую таблицу  (Прочитано 2866 раз)
0 Пользователей и 1 Гость смотрят эту тему.
luu
Участник
**
Offline Offline

Сообщений: 48


« Ответ #30: 6 Декабрь 2019, 17:15 »

Еще раз спасибо за помощь!
Немного подогнал, "причесал" кмк получившуюся конструкцию. Т.к. с форматом итоговой таблицы и самих карточек еще до конца не определились - добавил переменных, для удобства использования макроса при изменении положения ячеек.
На данный момент имеет такой вид:
Код:
Sub Aggr
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim rezCol, rezRow As Integer 'координаты первой ячейки с указанием номера карточки в итоговой таблице (номер столбца, номер строки)
' В первой колонке справа от ячейки с номерами карточек будет контроль наличия файла (0,1)
' Копирование данных из файлов карточек будет начинаться со второй колонки от номера карточки (начиная с показателя 1)
Dim cardCol, cardRow As Integer 'координаты первой ячейки с данными в карточке
Dim QuantInd As Integer 'количество показателей для перебора циклом
   
    Dim FolderName As String
    Dim prop(0) as new com.sun.star.beans.PropertyValue
    oASheet = Thiscomponent.Sheets(1)
   
    rezCol = 1
    rezRow = 2
    cardCol = 1
    cardRow = 1
    QuantInd = 57
    prop(0).Name="Hidden"
    prop(0).Value= true
   
FolderName = convertFromURL(DirectoryNameoutofPath(ThisComponent.URL, "/") & "/Data/"
    Print FolderName
   
    While oASheet.getCellByPosition(rezCol, rezRow).String <> ""
    If  FileExists(FolderName & oASheet.getCellByPosition(rezCol, rezRow).String & ".ods" ) Then
            oDoc2 = StarDesktop.loadComponentFromUrl(convertToURL(FolderName & oASheet.getCellByPosition(rezCol, rezRow).String & ".ods"), "_blank", 0, Prop())
For i = 0 To QuantInd
oASheet.getCellByPosition(i+rezCol+2,rezRow).String = oDoc2.Sheets(0).getCellByPosition(cardCol, cardRow+i).String
Next
oASheet.getCellByPosition(rezCol+1,rezRow).String = "ok"
oDoc2.Close(true)
Else
oASheet.getCellByPosition(rezCol+1,rezRow).String = "Нет файла"
End if
        rezRow = rezRow + 1
    Wend
End Sub

Сейчас возник еще один вопрос. Так как при большом количестве файлов макрос работает достаточно долго, иногда есть необходимость его не запускать (а по умолчанию - запускать при открытии файла).
Как показывать диалог с кнопкой "ОК" мне понятно. А как показать диалог с несколькими кнопками и, соответственно, при нажатии на них обрабатывать эти события?

Т.е. можно ли при запуске файла открывать диалог с вопросом "Запускать макрос?" и двумя вариантами "Да" и "Нет"?
Записан
rami
Гуру
*******
Offline Offline

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


iMac, LibreOffice и Apache OpenOffice


« Ответ #31: 6 Декабрь 2019, 18:24 »

Можно так:
Код:
Sub Main
Dim n%, ans$
ans="Была нажата кнопка "
n=MsgBox("Запускать макрос?", 4, "Заголовок")
If n=7 Then ans=ans & "НЕТ" Else If n=6 Then ans=ans & "ДА"
MsgBox(ans, 4, "Ответ")
End Sub
Записан

Страниц: « 1 2 3   Вверх
  Печать  
 
Перейти в:  

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