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

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

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

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

Сообщений: 2


« Стартовое сообщение: 30 Август 2018, 16:21 »

Добрый день! Помогите адаптировать макрос из MS Excel в LO Calc. LO Calc только начал осваивать, перечитал половину форума, но чего-то близкого пока не могу найти.

Что делает макрос:
1. При активации открывает окно выбора файла (название и местоположение может быть произвольным, поэтому сделано так).
2. Если файл выбран, он открывается как вторая книга. Если нет, выскакивает соответствующее сообщение и макрос завершает работу.
3. Проверяется контрольное значение во второй книге, если все правильно выдается соответствующее сообщение. Если нет, макрос завершает работу. Вторая книга остается открытой.
4. Копируются значения диапазона ячеек из второй открытой книги в первую.
5. Закрывается вторая книга без сохранения.
6. В первой книге курсор устанавливается на первую ячейку.
7. Макрос завершает работу.

Вот небольшой кусок макроса для MS Excel:

Sub ПриемОтчета()
'
' ПриемОтчета Макрос
' Прием отчета о работе
'

'
    IName = ActiveSheet.Name
    iOpenFile = Application.Dialogs(xlDialogOpen).Show _
            (Arg1:="C:\", Arg2:=False)

If iOpenFile = True Then
   MsgBox "Прием отчета " & ActiveWorkbook.Name
Else
   MsgBox "Отчет не принят. Файл отчета не выбран."
   GoTo exitmacros
End If
   
If Workbooks(2).Sheets("Оглавление").Range("C26").Value = "Отчет заполнен правильно!" Then
   MsgBox "Проверка отчета завершена. Отчет заполнен правильно"
Else
   MsgBox "Проверка отчета завершена. Отчет заполнен неверно. Данные не перенесены."
   GoTo exitmacros
End If
    Workbooks(1).Sheets(IName).Range("A5:A200").Value = Workbooks(2).Sheets("Отчет").Range("A5:A200").Value
    Workbooks(2).Activate
    Application.CutCopyMode = False
    ActiveWorkbook.Close (False)
    Workbooks(1).Activate
    Range("A1").Select
exitmacros:
End Sub
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 593


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 30 Август 2018, 17:51 »

Добро пожаловать на форум!
перечитал половину форума, но чего-то близкого пока не могу найти.
Возможно, не ту половину читал  Смеющийся

Вот небольшой кусок макроса для MS Excel:
...
(В следующий раз заключай код в теги "Код" - значок с решеткой над полем для ввода сообщения)

А вот точно такой же кусок для LO:
Код:
Sub getReport()
' Прием отчета о работе
GlobalScope.BasicLibraries.LoadLibrary("Tools")
oCurrentController = ThisComponent.getCurrentController()
oActiveSheet = oCurrentController.getActiveSheet()
oFileDialog = CreateUnoService("com.sun.star.ui.dialogs.FilePicker")
oFileDialog.SetDisplayDirectory(ConvertToUrl("C:\"))

iOpenFile = oFileDialog.Execute()
If iOpenFile = 0 Then
MsgBox "Отчет не принят. Файл отчета не выбран."
Exit Sub
End If

On Error GoTo exitmacros
oDoc = OpenDocument(oFileDialog.Files(0), Array())
oSheets = oDoc.getSheets()
oSheet = oSheets.getByName("Оглавление")

If GetStringOfCellByName(oSheet, "C26") = "Отчет заполнен правильно!" Then
MsgBox "Проверка отчета завершена. Отчет заполнен правильно"
Else
MsgBox "Проверка отчета завершена. Отчет заполнен неверно. Данные не перенесены."
Exit Sub
End If
oSheet = oSheets.getByName("Отчет")
oActiveSheet.getCellRangeByName("A5:A200").setDataArray(oSheet.getCellRangeByName("A5:A200").getDataArray())
oDoc.Close (True)
oCurrentController.select(oActiveSheet.getCellRangeByName("A1"))
oCurrentController.select(Nothing)
Exit Sub
exitmacros:
MsgBox "Возникла непредвиденная ошибка. Данные не перенесены."
End Sub
Разница совсем небольшая - при желании этот язык освоишь быстро

(Хотел подписаться "Таргариен", но решил, что хватит и "Валар Моргулис"  Смеющийся )
« Последнее редактирование: 30 Август 2018, 17:53 от JohnSUN » Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
Lanister
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #2: 31 Август 2018, 11:15 »

JohnSUN, Валар Дохаэрис. Большое спасибо за помощь! Общие моменты уяснил, переписал весь код под LO, всё работает как часы. С остальными макросами теперь мне будет проще справиться. :-)
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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