Libreoffice не работают макросы excel
пытаюсь настроить свою рабочую среду в libreoffice
учусь работать с макросами, ребята, если не затруднит, подскажите, почему данный макрос не работает в libreoffice? выдает ошибку 449 - "аргумент является обязательным" при этом если его запустить с файла скачанного из интернета, но созданного в майкрософте, то все работает. спасибо всем неравнодушным!
Адаптировать макрос Word под LibreOffice
Здравствуйте как сделать так чтобы макрос из Word работал в libreoffice
Макрос LibreOffice
Добрый день помогите написать макрос для очистки формата первой страницы текста документа.
макрос для libreoffice
Изменить цвет и размер шрифта каждого третьего слова в тексте. Хелп плиз.
Макрос в libreoffice basic
Здравствуйте нужно создать такой макрос: 1) чтобы он заменял все 1 на О, которые находятся рядом с.
w1nterdreams,
Где появляется эта ошибка?
это код обработки события Изменение на листе
т.е. запускается он сам при возникновении какого-то условия
при этом в качестве аргумента автоматически подтягивается активная ячейка (или диапазон ячеек)
Но в майкрософте всё хорошо работает
Добавлено через 2 минуты
Если запускать макрос в работу, выдаёт ошибку wrong by of parameters
w1nterdreams, почитайте похожая проблема была
Не вопрос, а просто для информации, может кому-то поможет.
В экселе был скрипт для автоматического заполнения текущим временем ячеек на листе в той же строке, со сдвигом по столбцам:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each cell In Target
If Not Intersect(cell, Range("A2:A900000")) Is Nothing Then
With cell.Offset(0, 8)
.Value = Now
.EntireColumn.AutoFit
End With
End If
If Not Intersect(cell, Range("H2:H900000")) Is Nothing Then
With cell.Offset(0, 2)
.Value = Now
.EntireColumn.AutoFit
End With
End If
Next cell
End Sub
(Правой кн м на листе - Просмотреть код - вставляется в код нужного листа).
Потребовалось воспроизвести аналогичный функционал в LibreOffice 6.2.8.2 Calc:
Через управление макросами создал модуль в Standard книги.ods и выше Sub Main вставил 2 функции:
Sub AddChartDataListener()
oCell1 = ThisComponent.getSheets().getByIndex(0).getCellRangeByName(" A2:A90000")
oListener = CreateUnoListener("MyApp_", "com.sun.star.chart.XChartDataChangeEventListener")
oCell1.addChartDataChangeEventListener(oListener)
oCell2 = ThisComponent.getSheets().getByIndex(0).getCellRangeByName(" H2:H90000")
oListener2 = CreateUnoListener("MyApp_", "com.sun.star.chart.XChartDataChangeEventListener")
oCell2.addChartDataChangeEventListener(oListener2)
End Sub
oSel = ThisComponent.getCurrentSelection()
oCellAddress = oSel.getCellByPosition(0, 0).getCellAddress()
oSheet = ThisComponent.CurrentController.ActiveSheet()
if oCellAddress.Column = 0 Then
OffsetCell = oSheet.getCellByPosition(oCellAddress.Column + 8, oCellAddress.Row)
OffsetCell.Value = Now()
End If
if oCellAddress.Column = 7 Then
OffsetCell = oSheet.getCellByPosition(oCellAddress.Column + 2, oCellAddress.Row)
OffsetCell.Value = Now()
End If
Затем правой кн м на листе - События листа. Событию "Содержимое изменено" назначен макрос AddChartDataListener.
(Безопасность выставлена в средний уровень: при открытии книги спрашивает, включать ли макросы).
Для изменяемых колонок I и J заранее выбрал формат дата+время. Есть нюанс. Когда задаётся адрес строки в автоматически заполняемой Now() ячейке из I или J: в варианте oCellAddress.Row макрос корректно реагирует на автовставку даты с помощью Ctrl+ж. Если же ячейка редактируется вручную, то результат появляется на следующей строке (а сдвиг по столбцам правильный).
Если сделать oCellAddress.Row-1, то при ручном вводе изменяется нужная ячейка, но при автовставке затирается значение строкой выше.
Я недавно перешел на pclinuxos из окон, и мне это нравится. Единственная проблема, с которой я столкнулся, заключается в том, что libreoffice, пакет электронных таблиц по умолчанию, несовместим с макросами Excel. Ниже приведен код vba, который у меня есть:
Есть ли способ преобразовать этот код, чтобы сделать его совместимым с libreoffice, или мне нужно выучить совершенно новый язык, например python? Изучение python не будет проблемой, но не является решением моей проблемы, поскольку у меня есть много файлов, связанных с работой, в excel, которые содержат много кода vba, и я не могу использовать открытый офис / libreoffice на работе .
Вы должны перевести части, которые управляют документом, чтобы использовать UNO API. К сожалению, это может быть сложно в зависимости от того, что делает ваш макрос. Основные утверждения работают напрямую. Как правило, при изменении документа этого не происходит.
Команда Cells возвращает определенную ячейку на основе строки и столбца. Итак, вам нужна текущая строка. Вот какое безумие получить активную ячейку:
Когда у вас есть активная ячейка, вы получаете адрес ячейки, а из него - строку. Вам вообще не нужно использовать диапазон, поскольку вас интересует только одна ячейка, поэтому вы получаете активный лист, а затем получаете конкретную ячейку из листа.
Примерно так: ThisComponent.getCurrentController (). GetActiveSheet (). GetCellByPosition (nCol, nRow) .getString () = "a"
Я не хочу разбираться в том, что это делает
Из файла интерактивной справки LibreOffice:
За некоторыми исключениями, Microsoft Office и LibreOffice не могут запускать один и тот же код макроса. Microsoft Office использует код VBA (Visual Basic для приложений), а LibreOffice использует код Basic, основанный на среде LibreOffice API (интерфейс прикладных программ). Хотя язык программирования тот же, объекты и методы разные.
Самые последние версии LibreOffice могут запускать некоторые сценарии Excel Visual Basic, если вы включите эту функцию в LibreOffice - PreferencesTools - Параметры - Загрузить / Сохранить - Свойства VBA.
На самом деле вам, скорее всего, придется сесть за LibreOffice API. и перепишем функционал.
Единственный автоматический инструмент, о котором я знаю, - это бизнес-таблицы (обратите внимание, что у меня нет личных или профессиональный опыт, или какое-либо отношение к сайту).
Это похоже на OpenOffice, но я думаю, что он работает и с LibreOffice.
В общем, лучше сделать это самому, инструмент далек от совершенства .
В LibreOffice 4.4 первая подпрограмма не будет работать вообще (я подозреваю, что все переменные начинаются с 'xl'. Две другие работают отлично, если вы измените ThisCell на ActiveCell.
Selection.SpecialCells(xlBlanks).Delete shift:=xlToLeft удаляет пустые ячейки, если я не ошибаюсь
Для этих целей есть специальная версия Portable: ftp://ftp/SPO/LibreOffice/Portable/
Установщик этой версии просто создаст папку с носимой версией LibreOffice. Эту папку нужно скопировать на карту памяти и запускать прямо с неё.
- Я открываю файл из приложения, но ничего не происходит.
- В свойствах документа не указывается автор, почему?
Поскольку LibreOffice продукт кроссплатформенный, он не берёт информацию об авторе из операционной системы. Нужно заполнить параметры автора в меню «Сервис»→«Параметры» во вкладке «LibreOffice»→«Сведения о пользователе». Не обязательно заполнять все поля, но, как минимум, ФИО и организацию следует заполнить. Также рекомендуется заполнить и контактную информацию, такую как e-mail и телефон.
- Периодически возникают проблемы с открытием файла: пустое окно, полосы на тексте, другие артефакты.
- Зайти в меню «Сервис»→«Параметры. »
- В разделе «LibreOffice»→«Вид» снять установленную опцию «Весь вывод при помощи OpenGL» , возможно потребуется отключить опцию «Аппаратное ускорение»
- У меня сейчас файлы tiff (jpeg,gif, и.т.п.) открываются в LibreOffice Draw и с ними невозможно работать.
Программа LibreOffice Draw, это редактор векторной графики, и он предназначен для другого. Не следует назначать программы из пакета LibreOffice для открытия по умолчанию абсолютно всех типов документов. Тот же tiff лучше открывать просмотром фотографий Windows или другими просмотрщиками, специально предназначенными для этого.
- Я загружаю документ на сайт или отправляю по электронной почте, но принимающая сторона не принимает формат ODF, как быть?
- Я отправляю файл в формате MS Office, но всё равно у получателя возникают проблемы с его открытием. В каком вообще формате лучше сохранять файлы, чтобы избежать проблем совместимости?
- О совместной работе с MS Office, если он установлен на вашем компьютере
Если у вас на компьютере установлен MS Office, может так получиться, что часть документов открываются в MS Office, а другая часть - в LibreOffice. В этом случае Вы обязательно столкнётесь с проблемой, при попытке копирования данных из одного офиса в другой. Чтобы этих проблем не было, нужно открывать все документы в LbreOffice. Учтите, что не смотря на декларирование совместимости с Open Document, на деле MS Office поддерживает этот стандарт плохо, поэтому, для одновременной работы с документами в различных форматах, открывать их нужно именно в LibreOffice.
- Как заставить работать макросы MS Office в LibreOffice?
- LibreOffice неожиданно закрывается без сохранения данных. Восстановление документов не помогает.
- ошибка библиотеки MSVC, которая проявляется под Windows 7. Для начала, следует переустановить библиотеку. ftp://ftp/SPO/LibreOffice/TroubleSooting/
- Также может помочь отключение OpenGL, как это описано выше.
- Как напечатать документ нажатием одной кнопки, чтобы не вызывалось окно параметров печати?
Кнопка непосредственной печати по умолчанию скрыта. Чтобы показать нужную кнопку, нужно кликнуть по панели инструментов (можно по кнопке «Печать») правой кнопкой мыши и выбрать из меню «Показать кнопки» показ кнопки «Печать непосредственно». Эта настройка активируется отдельно для каждого приложения, т.к. панели инструментов у каждого свои.
Работа с Directum¶
- При копировании ссылки из Directum она отображается кракозябрами
По умолчанию, при копировании, текст вставляется в формате RTF. Очевидно, текст берётся из Directum не совсем корректно — с неверной кодировкой. Если вставлять в формате HTML, через меню «Вставить как», то ссылка будет вставлена как нужно.
- Почему не открывается одновременно два документа из Directum?
При попытке открыть второй документ, он открывается сам после того, как я закрою первый. Если попытаться открыть несколько документов, то получается целая «карусель»
- Зайти в меню «Сервис» → «Параметры. »
- В разделе «LibreOffice» → «Память» установить опцию «Запускать LibreOffice во время запуска системы».
- После закрытия документа в LibreOffice, Directum не даёт повторно открыть его на редактирование.
Поможет установка опции «Запускать LibreOffice во время запуска системы», как описано выше. (Это официальная рекомендация техподдержки Directum)
- Я открываю на редактирование из Directum документ в формате RTF/DOC/DOCX. Как сохранить его в Directum в формате ODT (расширение odt, ods и т. п.)?
Для этого нужно этот документ сохранить с новым именем локально, а затем создать новую версию и загрузить из файла. Для этого нужно на документе в Directum кликнуть правой кнопкой и выбрать «Импортировать»→«Из файла», а затем загрузить новую версию из локального файла.
Копирование и вставка¶
- Как вставить в LibreOffice объект, чтобы он открывался по двойному щелчку в соответствующем приложении.
«Вставка→Объект→Объект OLE. ». Далее нужно выбрать тип объекта «Дополнительные объекты» и в открывшемся диалоге выбрать «создать из файла». Галку «в виде значка» устанавливать не нужно. При этом, вставленный объект будет нормально виден в MS Office, но, если файл сохранить в MS Office, для LibreOffice объекты будут потеряны.
- Я копирую данные из MS Office, и у меня съезжает всё форматирование. Копирование занимает очень много времени
Не следует копировать данные из одного приложения в другое. Следует открыть все нужные файлы в LibreOffice и все действия выполнять в нём.
Печать¶
- Как напечатать в файл формате PDF?
Через меню «Файл»→«Экспорт в PDF». Если необходимо выпустить документ для длительного хранения, нужно установить опцию «PDF/A»
- Напечатать файл с примечаниями?
Через меню «Файл»→«Печать. », выбрать нужную опцию в выпадающем списке «Примечания».
Делаю для себя словарик в LibreOffice Calc. В первой колонке слова, далее тип глагола и его перевод. Выбрал слово, например falar. Надо сделать кнопку на панели, чтобы при нажатии на нее запускалась программа просмотра eom (глаз мате) и ей передавался файл с именем глагола falar.jpg, в котором таблица его склонений. Все файлы глаголов png хранятся там же, где и файл словарика. Никогда не работал с макросами, да и с офисом собственно мало, все больше TeX. В програмировании не силен. Пытался читать как это сделать и утонул в объеме информации. Может кто подскажет, кто уже знает как это делается.
grem ★★★★★ ( 21.06.15 22:17:17 )
Последнее исправление: grem 21.06.15 22:18:38 (всего исправлений: 1)
Спасибо. Работает, но только если вместо file:// вставить полный путь к директории, где лежат файлы png. А какой оператор берет путь где лежит сам файл ods?
Понятно, файл до этого должен быть сохранён хотя бы один раз! sURL будет вместе с именем файла. Его надо обрезать.
Вру! Правильно использовать не getURL(), а getLocation() и ничего обрезать не нужно.
Вот чёрт! Сейчас сам проверил и не работает!
Правильный вариант: sURL = oDoc.URL вместо sURL = oDoc.getURL() . Нужно обрезать имя.
Вот стопудово работающий вариант:
Вы не смогли бы мне помочь еще с другой проблемой. Как сделать так, чтобы при наведении мыши на ячейку допустим К26 появлялась подсказка (примечание) в котором был бы номер ячейки А26 (в той же строке). Поясню нужду: веду учет студентов на занятиях. В столбце А есть или номер студента или его фамилия. Количество лекций велико и столбец А уходит из окна влево и чтобы найти ячейку студента приходится водить долго пальцем по экрану. Я решил проблему тем, что добавил примечание в каждую ячейку с номер соответствующей ячейки. Трудоемко, но сделал и теперь просто копирую столбец в каждый новый день. Примечания копируются автоматически. Но может есть какая глобальная настройка?
Это делается через «закрепить область»
Спасибо большое. Это то что надо. Всю жизнь пользуюсь техом, но вот в этих случаях лучше офис.
Здравствуйте. Как настроить возможность создания/редактирования макросов python в Libre Office 3.3.4, Ubuntu 11.04. При запуске Сервис - Макросы - Управление макросами - Python в открывшемся окне все кнопки кроме «Закрыть» и «Справка» неактивны. С другими макросами (basic, javascript, beanshell) все нормально. Поиск в документации и сети ничего не дал.
В арче это отдельный пакет, может у вас то же самое?
А как примерно называется пакет?
ibreoffice-extension-scripting-python в арче. Ищите по libreoffice python, думаю.
python-openoffice (. It aims to support: * users writing complex macros for OpenOffice in Python . )
и python-uno (The Python-UNO bridge allows use of the standard LibreOffice API with the Python scripting language. . )
- оба уже установлены. Больше ничего не нашел.
А если в консоли запустить?
может что интересного будет?
Попробовал запустить в консоли: запускается молча - ошибок или предупреждений никаких нет.
Он по умолчанию в консоль ничего не валит, поищи ключик для включения отладки.
Еще может, ему нужна старая версия пайтона.
Спасибо ответившим. Оказалось, что с макросами python все в порядке. Примеры макросов нормально запускаются, правда создать новый макрос python или отредактировать существующий из libreroffice не получается. Хотя для макросов basic, javascript и beanshell для их создания и редактирования вызывается встроенный(?) редактор - это и сбило с толку. В итоге, если созданный макрос кинуть в каталог ~/.libreoffice/3/user/Scripts/python, то он подхватывается и выполняется.
IDE опенофиса не поддерживает питон. Потому и кнопка неактивна. Пиши в виме, заливай куда нужно.
Читайте также: