Макросы в Excel обратитесь к последовательности инструкций или команды, которые будут выполняться в электронной таблице. Иногда нам понадобится импортировать данные из Excel в базу данных OpenOffice , но могут возникнуть проблемы с макросами. Вот почему мы собираемся научить вас, как легко преобразовать файл макроса Excel в OpenOffice.
Что такое макрос и для чего он нужен? , поскольку цель не нет необходимости выполнять одни и те же задачи все время, потому что Excel может сохранять эти макросы в определенном месте; Они бывают простыми или сложными и становятся очень полезным инструментом.
Поэтому, если вам нужно повторять их регулярно, запишите макрос или группа действий, чтобы их можно было выполнять в автоматическом режиме , сколько угодно раз; даже измените их, если необходимо.
Язык Visual Basic для приложений или VBA — это тот, который используется в Microsoft Excel. для легко создавать макросы в Excel шаг за шагом ; которые также используются Powerpoint, Outlook, Word и другими.
Эти макросы можно экспортировать в файлы трех разных типов ; чьи расширения и их связь с макросами будут описаны ниже:
- Файлы с расширением .xlsm: это файлы Excel, содержащие один или несколько встроенных макросов.
- .Xltm extension: это файлы типа шаблона, в которых сохраняется макрос; инструкции которого можно загрузить из других проектов Excel с расширением .xlsm.
- Расширение .Xlam: это тип файла, который используется в качестве внешнего дополнения и в дополнение к файлу .xlsm для выполнения инструкций макроса.
Что такое OpenOffice?
Помните, что OpenOffice — это группа программы, принадлежащие Apache Software Foundation , с целью одновременного создания, развития и защиты ряда документов, которые используются на уровне офисов, жилых домов и государственных предприятий.
Эта группа состоит из разных программ, таких как Writer, Base, Draw, Math, Impress и Calc ; у каждого из них есть свой аналог в Microsoft Office.
Например Calc, была электронная таблица где мы можем импортировать файлы XML в электронную таблицу в OpenOffice и делать то же самое, что и в Microsoft Excel; позволяя выполнять все виды математических операций и экспортировать в другие документы, такие как PDF.
Как легко преобразовать файл макроса Excel в OpenOffice?
Мы должны помнить что Excel использует язык VBA для создания макросов, а инструмент OpenOffice неправильно читает Visual Basic, поэтому, если мы хотим преобразовать файл макроса из Excel в OpenOffice, для выполнения этой процедуры потребуется дополнительный инструмент.
Есть альтернативы, которые могут помочь нам в этом преобразовании, например, передача макросов из Microsoft Excel Visual в OpenOffice Calc; в некоторых случаях изменение не завершено и необходимо внести коррективы чтобы он работал на 100% в OpenOffice.
Этот инструмент подходит программистам, которым нужен быстрый процесс преобразования; что позволит нам заменить Excel VBA на Calc’s OO Basic, что мы достигнем через бесплатную веб-страницу.
Это происходит со страницы Деловые таблицы , в направлении которого после ввода вы увидите большой прямоугольник с надписью «Excel VBA Code», где вам нужно разместить код Visual Basic; затем вы нажмите «Конвертировать VBA» и он сразу станет CalcBasic.
Однако мы должны отметить, что с 2006 года в OpenOffice можно установить некоторые дополнительные программы, совместимые с макросами Excel. В результате мы избегаем постоянного преобразования кодов VBA (Visual Basic для приложений) в OO Basic; Comme программа Go-oo .
В заключение можно сказать, что преобразование файла макроса из Excel в OpenOffice не имеет серьезных осложнений для его реализации все будет зависеть от потребностей пользователя, поскольку мы также видели, что есть программы, которые вы можете установить в свой OpenOffice, избегая рассматриваемого процесса.
Автор Kosh, 12 мая 2016, 12:40
0 Пользователи и 1 гость просматривают эту тему.
Здравствуйте!
Помогите, пожалуйста решить проблему. Имеется файл excel с макросами на VBA, который нужно открыть в openoffice calc!
Перебрал разнообразные варианты, но каждый раз при открытии макросы не работают.
Подскажите, что сделать для переноса макросов и их корректной работы?
Если нужно, напишите — прикреплю файлик!
Добро пожаловать на форум!
Его открыть-запустить в AOO и там и оставить? Или нужно будет вернуть человеку с Excel?
Какая версия офиса? Под какой ОС? Почему не LibreOffice?
Цитата: Kosh от 12 мая 2016, 12:40
Если нужно, напишите — прикреплю файлик!
Пишу: «Нужно! Прикрепляй!»
Спасибо, JohnSUN!
Да, его нужно открыть-запустить и оставить в ОО или LibO это не принципиально, главное чтоб все работало)))
Версия excel, насколько я помню была 2007, машину не помню (ОС)…
Просто половину макросов писал я, а половину до меня… И было это 2 года назад, мало что помню.. но вот пришлось вернуться к проекту, а тут такая засада, excel использовать нельзя(((
Файл в прикрепе
Да, чувствуется, что давно писалось… Я так понимаю, что сегодня формулы в ГФ0.B69:AF71 ты написал бы чуть иначе, да? Да и всё связанное с пересчётом дат-дней-лет тоже, наверное, упростилось бы…
Быстро исправить и запустить не получится — слишком много хомутов зависло в коде, которые нужно осмысливать и изменять. Похоже, даже под Экселем эта книга не заработала бы… Прими мои соболезнования — у тебя впереди много часов увлекательной работы…
Кстати, раз уж всё равно книгу придётся переделывать с нуля, то может выбрать какой-то другой инструмент? Насколько я успел увидеть, то электронную таблицу выбрали не столько за возможность что-то считать, сколько за возможность яркого форматирования…
Да сегодня все по-другому было бы…
Хочется упростить рутинную работу.. но моих знаний уже не хватает, да и «растерял половину»…
Вот ищу пути выхода из ситуации… Просто «она» работала в экселе, когда я её открывал последний раз, а сейчас новое время, новые потребности.
Я вообще начинал делать эту таблицу «в ручном режиме», т.е. совсем без макросов))) на формулах пытался выехать)))
А что она пестрит разноцветием — так это просто для наглядности было сделано.. можно и два — три цвета использовать.
Основная её функция это при занесении новой информации показать о оставшемся свободном времени… но в процессе функций добавилось.
В общем, я в панике)))
Подскажите, пожалуйста, какие варианты есть? После увиденного, что можно сделать и… в денежном эквиваленте сколько будет, если все это довести до ума?
Цитата: Kosh от 12 мая 2016, 14:45
Да сегодня все по-другому было бы…
Хочется упростить рутинную работу..
А в чём она заключается-то? Из текста макросов не сильно видна предполагаемая последовательность действий пользователя… и конечный результат тоже не просматривается
Цитата: Kosh от 12 мая 2016, 14:45но моих знаний уже не хватает, да и «растерял половину»…
Ой, врёте, батенька! Это ж как, к примеру, на велосипеде ездить или в воде плавать — раз научился и уже не забудешь.
Цитата: Kosh от 12 мая 2016, 14:45
Вот ищу пути выхода из ситуации… Просто «она» работала в экселе, когда я её открывал последний раз, а сейчас новое время, новые потребности.
Вот тогда, наверное, и лист с названием МП0 удалил… А к нему почти каждая процедура обращаться пытается
Цитата: Kosh от 12 мая 2016, 14:45
Я вообще начинал делать эту таблицу «в ручном режиме», т.е. совсем без макросов))) на формулах пытался выехать)))
…и это было, пожалуй, самым правильным решением при использовании электронных таблиц… В случае с базой данных — а для таких задач почему-то именно их стараются использовать — упор сразу бы пошел на макросы, чтобы удобный пользовательский интерфейс сваять. А в Calc’е без многих фишек вполне можно было бы обойтись.
Например, вот этот способ выбора месяца-года через два выпадающих списка… Ну зачем? Есть же элемент «Календарь» — один вместо двух. Или те же два списка, но не отдельными комбобоксами, а как свойство ячейки (Данные-Проверка-Список)…
Цитата: Kosh от 12 мая 2016, 14:45
А что она пестрит разноцветием — так это просто для наглядности было сделано.. можно и два — три цвета использовать.
Да нет, я не упрекаю за обилие цветов — просто зачем было писать столько макросов для форматирования (раскрашивания), если встроенный Условный Формат с этой задачей справляется лучше?
Цитата: Kosh от 12 мая 2016, 14:45
Подскажите, пожалуйста, какие варианты есть? После увиденного, что можно сделать и… в денежном эквиваленте сколько будет, если все это довести до ума?
Что тут скажешь? Напрашивается вариант с базой данных… Ну, чтобы после тщательной разметки плана он не пропал, а сохранился для дополнительной корректировки. А вдруг тебе это все и хранить не надо? Просто разметить месяц, распечатать что получилось и забыть… Тогда и база не нужна, действительно всё на электронных таблицах сделать…
А про эквивалент можно будет говорить, когда станет известно в какой стороне и как далеко этот ум, к которому нужно довести
Тогда, если не возражаете, я напишу в личку или на почту с подробными пояснениями что хотелось получить в конечном результате!?
А про знания, я на самом деле не шучу))) я мало что знаю в этом деле… все делал так… искал, читал о каждом элементе который хотел получить в результате и методом проб и ошибок доводил до работоспособности, об упрощении или альтернативных вариантах даже не думал)))
Потом, на той стадии, мне тоже помогали… а сейчас помощники кончились)))
На самом деле, может если я объясню что да как это окажется «совсем просто» сделать и мне нужна лишь подсказка… кто знает))))
Могу также с пояснениями прислать начальный вариант книги, где только формулы.
Не возражаю, конечно…
Описанный метод искать-читать-пробовать-ошибаться — это путь любого программиста, ничего необычного в нём нет.
Здравствуйте, помогите адаптировать для Basic простенький макрос. Спасибо
Sub Fill_Blanks()
For Each cell In Selection
If IsEmpty(cell) Then cell.Value = cell.Offset(-1, 0).Value
Next cell
End Sub
Попробуйте:
Sub Fill_Blanks
sel=ThisComponent.CurrentSelection
data=sel.DataArray
For i=1 To UBound(data)
If data(i)(0)="" Then data(i)(0)=data(i-1)(0)
Next
sel.setDataArray(data)
End Sub
Да! большое спасибо
Добрый день.
Есть макрос с эксель. Сохранение названия файла с датой и временем: Книга1_11.04.2007 16.12.41.xls
Option Explicit
Sub Macro1()
Dim iName$, iDate$
iDate = Now ‘узнаем текущую дату и время
iDate = Replace(iDate, «:», «.») ‘заменяем двоеточия на точку
iName = ActiveWorkbook.Name ‘узнаём имя файла
iName = Left(iName, Len(iName) — 4) ‘убираем расширение файла
iName = «C:Temp» & iName & «_» & iDate & «.xls» ‘полное имя файла
ActiveWorkbook.SaveAs Filename:=iName, FileFormat:=xlNormal, Password:=»», _
WriteResPassword:=»», ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
Подскажите, как его переписать под OpenOffice?
Так работает в LibreOffice Calc (добавил одну строку)
Option Vbasupport 1
Option Explicit
Sub Macro1()
Dim iName$, iDate$
iDate = Now 'узнаем текущую дату и время
iDate = Replace(iDate, ":", ".") 'заменяем двоеточия на точку
iName = ActiveWorkbook.Name 'узнаём имя файла
iName = Left(iName, Len(iName) - 4) 'убираем расширение файла
iName = "C:Temp" & iName & "_" & iDate & ".xls" 'полное имя файла
ActiveWorkbook.SaveAs Filename:=iName, FileFormat:=xlNormal, Password:="", _
WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub
При многократном запуске макроса имя «задваивается», скорее всего нужно очищать iName.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, —
Не понять его никак…
economist спасибо за помощь.
Макрос у меня не работает.
Пишет:
Ошибка времени выполнения Basic.
’12’
ActiveWorkbook
На StarBasic ненамного длиннее
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 = "~/Inst/" & iName & "_" & iDate & ".xls" 'полное имя файла
ThisComponent.StoretoURL(ConverttoURL(iName),args1())
End Sub
0 / 0 / 1 Регистрация: 26.03.2011 Сообщений: 73 |
|
1 |
|
09.07.2015, 12:06. Показов 4693. Ответов 2
Всем привет! Делается это так: Суть в том что я смог сделать эти простые действия и настроить, а вот люди, которые не соображают в этих нюансах хотят просто запустить и работать. Заранее спасибо. P.S. Если нет вариантов через макросы, то есть ли какие-нибудь другие способы?
0 |
1337 / 308 / 74 Регистрация: 13.11.2008 Сообщений: 635 |
|
09.07.2015, 12:45 |
2 |
Если нет вариантов через макросы А их скорее всего и нет, т.к. чтобы все корректно работало из под ОО надо сначала проделать операции в меню, описанные Вами выше. Т.е. замкнутый круг. Это все равно что макросом включать макросы — пока не включишь макросы не выполнится макрос на их включение
0 |
0 / 0 / 1 Регистрация: 26.03.2011 Сообщений: 73 |
|
09.07.2015, 13:41 [ТС] |
3 |
А их скорее всего и нет, т.к. чтобы все корректно работало из под ОО надо сначала проделать операции в меню, описанные Вами выше. Т.е. замкнутый круг. Это все равно что макросом включать макросы — пока не включишь макросы не выполнится макрос на их включение Есть одна загвоздка. Сделать макрос именно на VBA for OO, который собственно и запустит обработчик)) Но как это сделать и возможно ли, ума не приложу.
Поэтому скорее всего надо просто посмотреть, какие изменения в реестре делают указанные настройки и делать их либо батником, либо скриптом VBS, либо писать свой exe, который это сделает. Бат файл — это первое, что пришло в голову, но поехавшие заказчики не могут позволить себе такого ужаса на их компах)
0 |
How to port Excel VBA macro to OpenOffice macro?
Here is macro for creating hyperlinks:
Sub HyperMaker()
Dim r As Range
Dq = Chr(34)
For Each r In Selection
r.Formula = "=HYPERLINK(" & Dq & "http://" & r.Text & Dq & ";" & Dq & r.Text & Dq & ")"
Next r
End Sub
I tried convert this macro to OpenOffice macro (using http://www.business-spreadsheets.com/vba2oo.asp)
Sub HyperMaker()
Dim r As Dim oSheet as Object[n]oSheet = ThisComponent.CurrentController.ActiveSheet[n]oSheet.getCellRangeByName($1)
Dq = Chr(34)
For Each r In Selection
r.Formula = "=HYPERLINK(" & Dq & "http://" & r.Text & Dq & ";" & Dq & r.Text & Dq & ")"
Next r
End Sub
But got errors: BASIC syntax error: Unexpected symbol: Dim.
, Expected:,.
Replacing Dim with comma not help.
How to make it work in OpenOfffice?
pnuts
58k11 gold badges85 silver badges137 bronze badges
asked Feb 25, 2014 at 12:53
2
Solution:
Sub makeHyperlinks()
Dim sh As Object, z As Object, c As Object
Dim qCells As Object, enuCells As Object
sh = ThisComponent.Sheets.getByName("YourSheetName")
z = sh.getCellRangeByName("B1:B5") ' your column (or rectangle)
qCells = z.queryContentCells(-1)
enuCells = qCells.Cells.createEnumeration
Do While enuCells.hasMoreElements
c = enuCells.nextElement
c.Formula = "=HYPERLINK(""http://" & c.String & """)"
Loop
End Sub
answered Feb 27, 2014 at 12:18
2
Главное свойство Open Office – это встроенный, современный язык программирования. И в нем именно макросы в openoffice и самом процессе составления программ – отыгрывают самую важную роль.
Содержание
- Как включить макросы в openoffice?
- Создание
- Выполнение
- Загрузка данных в таблицу и внешние файлы
Дабы запустить макросы в опен офис – надо включить его, открыть доступ к данной команде. Потому стоит выбрать саму:
- Команду Сервисы.
- Далее переходят к Макросы.
- Затем перейти в Управление макросами.
- OpenOffice.org Base или нажмите Alt+F1, если комбинации клавиш не применима для других функций.
Создание
Как создать его или модернизировать уже существующий для его улучшения – в самом начале стоит создать на ПК подпрограмму Basic. Либо же специальные функции, которые на практике именуют макросами.
В самом начале стоит перейти в программное меню Writer и дважды кликните мышкой на пункте Сервис. Далее откроется подменю – Макросы, и переведя на него мышкой, система откроет список и опции, доступные пользователю. Надо остановить выбор на пункте – Управление макросами. Уже в нем – перейти на OpenOffice.org Basic….
Пользователю открыто диалоговое окно – в нем пользователь выбирает сам макрос, новый или тот, который будет редактироваться. По умолчанию сама система будет создавать его под именем Main – пользователь в окошке редактирования может увидеть большое полотно кода, с которым и проводят редактирование.
Выполнение
После редактирований или создания макроса – каждый пользователь захочет увидеть результаты собственного труда. Надо вернуться в диалоговое окошко OpenOffice.org Writer и далее перейти в меню, выбирая раздел Сервис – Макросы. Далее можно использовать раздел меню – Управление или же воспользоваться кнопкой- «Выполнить», размещенной непосредственно на панели прилагаемых инструментов.
Можно применить и второй, упрощенный вариант выполнения после того, как он был отлажен. Его можно выделить и назначить непосредственно пунктом меню, либо клавиатурным сокращением на панели инструментов, либо событиям. В данном варианте – его возвращают обратно в окно Управление. И после того, как кликнули «Назначить» – система выдает все варианты опций.
Загрузка данных в таблицу и внешние файлы
Заполнение необходимых таблиц данными способно существенно сэкономить время при создании отчета, но именно таблицы помогут сделать сам документ максимально удобным и читабельным. Следующий макрос позволит открыть файл и из него загрузить в таблицу необходимые данные.
Таблица на выходе будет заполнена нужными данными полей, состоящей из имени пользователя, плюс ко всему домашней директории, идущих из файла /etc/passwd. На первый взгляд сам код выглядит внушающее, но основная часть-стандартна. Так пользователь может видеть конкретный пример проводимых циклов операторами. Можно также обратить отдельное внимание непосредственно на doc=thisComponent – оператор помогает пользователю ссылаться на doc и при этом не использовать длинное, неудобное в написании его обозначение.
Важная деталь – сам синтаксис Basic не будет регистрозависимый. И по данной неочевидной пользователю детали оператор cell = table.getCellByName выполним аналогично CELL = table.getcellbyname. И тут надо применять регистры для простоты чтения.
Строка filenumber = Freefile позволяет присвоить значение уникального на ПК идентификатора ID простой переменной номера файла. Это позволит запомнить иные, уже назначенные в программах ПК ID.
Уделить внимание надо и команде split – она преобразует выходные данные строки и будет возвращать массив используемых подстрок выбранной строки, разбитой по самим разделениям, которые прописал сам пользователь. При этом для определения разделителя в используемом файле паролей пользователь использует непосредственно двоеточие.