Язык макросов в openoffice + видео обзор

Содержание
  1. Пишем макросы для OpenOffice.org
  2. Hello, World!
  3. Исследование объектов
  4. Некоторые характерные приёмы OOo Basic
  5. Библиотеки и модули
  6. Запуск макросов
  7. Запуск макросов программно
  8. Диалоги
  9. Обработка событий
  10. Введение
  11. 1 OpenOffice Basic и LibreOffice Basic
  12. 2 Мой первый макрос: “ Hello World ” [1]
  13. 3 Левый Alt нажать одновременно с F11 для открытия ООо Basic IDE
  14. 4 Оператор REM или апостроф ‘ перед комментарием
  15. 5 Циклы Do. Loop
  16. 6 Группировка текста программ [1]
  17. 7 Передача параметров процедурам и функциям
  18. 8 Необязательные (Optional) параметры
  19. 9 OpenOffice.org и LibreOffice API
  20. 9.1 Справочная информация по API OpenOffice.org и LibreOffice
  21. 9.2 Создание и обращение к объектам
  22. 9.3 Сервисы LibreOffice Basic
  23. 9.4 Список всех сервисов, поддерживаемых LibreOffice Basic
  24. Первые шаги в работе с макросами
  25. Язык макросов OpenOffice.org
  26. Хранение макросов в библиотеке документов
  27. Шаг 1. Создание библиотеки
  28. Макросы, диалоги и библиотеки (Basic)
  29. Создание макроса OpenOffice.org
  30. Выполнение макроса
  31. Более сложный макрос
  32. Следующее: Вставка информации из внешнего файла.
  33. В заключение:
  34. Обсудить на форуме.
  35. Видео

Пишем макросы для OpenOffice.org

Hello, World!

OOo Basic основан на процедурах и функциях, который задаются ключевыми словами Sub и Function. Каждый модуль содержит набор процедур (функций). Библиотека содержит набор модулей. Документ может содержать несколько библиотек. Библиотеки могут существовать также на уровне приложения в целом.

Среда разработки OOo Basic имеет средства отладки, такие, как установка точек прерывания и наблюдаемых переменных. Вы можете также выполнять макросы по шагам.

Исследование объектов

При программировании часто бывает необходимо выяснить, какие свойства и методы поддерживает тот или иной объект, или вообще выяснить, что это за объект, например, просто для того, чтобы найти по нему справку.

Доступ к текущему документу и рабочему столу обеспечивают глобальные переменные ThisComponent и StarDesktop, которые всегда доступны.

Вы можете узнать, поддерживает ли объект конкретный сервис:

Метод объектов getImplementationName() возвращает полное имя данного объекта. Используйте полное имя объекта для поиска в Интернете или в Руководстве разработчика:

Метод объектов getSupportedServiceNames() возвращает перечень всех сервисов, поддерживаемых объектом:

Макрос WritedbgInfo(object), поставляемый с OOo, выводит информацию трёх вышеуказанных методов в окно документа OOo Writer:

Некоторые характерные приёмы OOo Basic

Приведённый выше вызов заменяет следующие два примера:

В языке OOo Basic глобальная переменная ThisComponent ссылается на текущий документ или на документ, из которого был вызван данный макрос. Переменная ThisComponent получает свое значение один раз, когда макрос стартует, и не изменяется, даже если этот макрос делает текущим другой документ. Если активным является компонент другого типа (не документ), то ThisComponent ссылается на последний активный документ. В других языках способом получить этот объект является использование getCurrentComponent() для объекта рабочего стола (desktop object). Глобальная переменная StarDesktop ссылается на объект рабочего стола (desktop object), который является основным приложением OOo.

Если вы написали функцию (но не процедуру) на языке OOo Basic, вы можете вызвать ее из электронной таблицы Calc, как обычную функцию рабочего листа, в формуле ячейки.

Библиотеки и модули

Библиотеки макросов содержатся в следующих контейнерах:

Библиотека содержит модули. Нельзя выполнить макрос, содержащийся в библиотеке, если библиотека еще не загружена. Каждый контейнер как правило имеет библиотеку с именем Standard. Модули содержат процедуры и функции, т.е. собственно макросы.

Контейнер «Макросы OpenOffice.org» находится в папке, наподобие такой: C:\Program Files\OpenOffice.org 2.3\share\basic. Контейнер «Мои макросы» находится в папке, наподобие такой: C:\Documents and Settings\ \Application Data\OpenOffice.org2\user\basic.

Библиотеками можно управлять и программно. Следующая функция создаёт новую библиотеку «dummy», устанавливает на неё пароль, отображает список всех библиотек, затем удаляет библиотеку «dummy» и вновь отображает список всех библиотек:

Когда библиотека загружена, содержащиеся в ней макросы становятся видимыми из OOo Basic. Если библиотека не загружена, вы не можете вызывать процедуры, функции и диалоги, которые в ней содержатся. Библиотека Standard всегда загружена и доступна автоматически.

Запуск макросов

Запуск макросов программно

Можно выполнить макрос из командной строки, подобно следующему:

Из командной строки можно также запустить макрос конкретного документа сразу при открытии этого документа:

Если уже открыт, например, документ test1.odt, сработает и такая командная строка:

Можно выполнить макрос из кода другого макроса (используются аналогичные URL), подобно следующему:

Диалоги

Механизм макросов OOo Basic позволяет конструировать и выводить диалоговые формы (окна диалогов) для взаимодействия с пользователем.

Запуск диалога можно осуществить примерно таким образом:

Как видно, полезно иметь переменную, ссылающуюся на данный диалог, определенную вне процедуры запуска диалога, так, чтобы другие процедуры могли обращаться к диалогу (к этой переменной). Для данного примера процедура CloseDialog назначается как обработчик события «Отпускание клавиши мыши» для кнопки диалога (это можно сделать в свойствах этой кнопки в визуальном редакторе форм). После закрытия диалога процедура CloseDialog отображает содержимое текстового поля «TextField1» диалога.

Для перебора элементов управления в диалоге используйте код наподобие следующего:

Элементы управления могут быть размещены и прямо в документе, с помощью панели инструментов «Элементы управления». Им так же могут быть назначены макросы-обработчики событий (через свойства).

Обработка событий

Макрос может выполняться автоматически, когда происходит указанное событие программы, т.е. можно назначить нужный макрос нужному событию.

Программно можно назначить макросы-обработчики для большего числа событий. Например, можно обрабатывать событие изменения данных указанной ячейки Calc. Первая процедура в примере регистрирует обработчик события (вторую процедуру):

Источник

Введение

В настоящее время у человечества стоит задача автоматизировать и роботизировать наиболее опасные, трудоемкие, не интересные виды человеческой деятельности. Наиболее актуальна роботизация при выполнении боевых задач, видов деятельности, сопряженных с риском для жизни человека.

Программирование является ключевым звеном в процессе создания высокопроизводительных автоматизированных производств, роботов, высокотехнологичных и высокодоходных изделий оборонного и гражданского назначения.

Особую ценность имеет возможность создания в бесплатной среде новых уникальных программ, собираемых из широкодоступных программ и библиотек на слабооборудованных рабочих местах или в домашних условиях.

1 OpenOffice Basic и LibreOffice Basic

OpenOffice Basic и Libre O ffice Basic ранее назывались StarOffice Basic, StarBasic, OpenOffice.org Basic, OOo Basic. LibreOffice Basic в настоящее время развивается, опережая OpenOffice Basic, поэтому в дальнейшем будем преимущественно говорить о Libre O ffice Basic.

OOo Basic схож с другими диалектами Basic, например, с Visual Basic for Application может иметь одинаковый программный код в широкой области применения.

OOo Basic позволяет программировать в пакетах офисных программ OpenOffice и LibreOffice, а также автоматизировать управляющие этими пакетами действия. ООо Basic не позволяет создавать самостоятельно выполняемые программы с расширением exe.

— легок для изучения;

— поддерживает объекты COM ( ActiveX ) и расширенные возможности GUI в OpenOffice ;

— есть сообщество пользователей в Интернет;

— это решение для нескольких платформ (Linux, Windows и т.д.).

Кроссплатформенность (совместимость с 32/64-битными системами, поддержка таких самых популярных операционных систем, как Microsoft Windows, GNU/Linux и Mac OS X), свободное распространение для бесплатного использования в частных и коммерческих целях, открытый исходный код придают Libre O ffice Basic особую ценность.

В справке по OpenOffice или LibreOffice, вызываемой при нажатии на F1, в разделе «Макросы и программирование» можно получить львиную долю информации о программировании на OOo Basic.

2 Мой первый макрос: “ Hello World ” [1]

3 Левый Alt нажать одновременно с F11 для открытия ООо Basic IDE

4 Оператор REM или апостроф ‘ перед комментарием

‘П рограмма начинается оператором Sub с именем Main

REM К омментарий для людей программа не выполняет

Print » REM или ‘ перед комментарием » ‘ Выведем

‘ Следующий оператор завершает программу

End Sub REM программа завершилась

REM — это сокращение слова remark (комментарий).

5 Циклы Do. Loop

Цикл Do While УсловиеLoop п роверяет перед каждым выполнением цикла истинно ли условие и выполняться пока (While) истинно условие:

Цикл Do Until УсловиеLoop выполняется до (Until) истинности условия. Цикл выполняется, если условие ложно:

Цикл Do … Loop While Условие выполняется по крайней мере один раз и продолжает выполняться пока (While) истинно условие:

Loop While Условие

Цикл Do … Loop Until Условие выполняется один или большее число раз до (Until) наступления момента истинности условия

6 Группировка текста программ [1]

Листинг 3.2 : “Hello world” с использованием процедуры и функции.

Function HelloWorldString () As String

HelloWorldString = «Hello World»

Каждый модуль (m odule) содержит набор процедур (функций). Библиотека (Library) содержит набор модулей. Документ (document) может содержать библиотеку или несколько библиотек. Библиотека может существовать также на уровне Приложения (application level), такого как OOo Writer.

7 Передача параметров процедурам и функциям

П роцедуры и ф ункции могут получать несколько параметров. После имени процедуры или функции передаваемые параметры заключаются в круглые скобки, н апример,

‘ Параметр A теперь имеет значение 20

Sub ChangeValue ( TheValue As Integer )

Вы можете также передать параметр по значению, если Вы не хотите, чтобы последующие изменения параметра затронули значение, которое было передано первоначально. Чтобы определить, что параметр нужно передать по значению, удостоверьтесь, что ключевое слово ByVal предшествует объявлению переменной в заголовке функции.

В предыдущем примере, если мы заменяем функцию ChangeValue на функцию

Sub ChangeValue ( ByVal TheValue As Integer )

тогда переменная A остается незатронутой этим изменением. После вызова функции ChangeValue, переменная A сохраняет значение 10.

Примечание Метод для передачи параметров процедурам и функциям в OOo Basic фактически идентичен VBA. По умолчанию, параметры передаются по ссылке. Чтобы передавать параметры по значению, используйте ключевое слово ByVal. В VBA, Вы можете также использовать ключевое слово ByRef, чтобы вынудить параметр быть переданным по ссылке. OOo Basic не поддерживает это ключевое слово, потому что оно уже используется по умолчанию в процедурах OOo Basic.

8 Необязательные (Optional) параметры

Функции и процедуры можно вызвать, только если все необходимые параметры передаются во время вызова. OOo Basic позволяет Вам определять параметры как необязательные, то есть, если соответствующие значения не включены в запрос, OOo Basic передает пустой параметр. В примере [ 9 ; стр. 24 ]

параметр A обязателен, тогда как параметр B является необязательным. Функция IsMissing проверяет, передан ли параметр или нет.

Dim B_Local As Integer

‘ Проверка, присутствует ли параметр B фактически

If Not IsMissing ( B ) Then

B_Local = B ‘ Параметр B присутствует

Пример сначала проверяет, передали ли параметр B и, в случае необходимости, передает этот параметр внутренней переменной B_Local. Если соответствующий параметр отсутствует, то значение по умолчанию (в этом случае, значение 0) передается B_Local, а не переданному параметру.

Примечание Ключевое слово ParamArray присутствующее в VBA не поддерживается в OOo Basic.

9 OpenOffice.org и LibreOffice API

OpenOffice и LibreOffice API (application programming interface) не является языком программирования, он только интерфейс программирования приложений в виде готового набора методов, предлагаемых сервисом для создания программ. OpenOffice и LibreOffice API содержат много сервисов (Services) и объектов (Objects).

Способы использования StarBasic API в программировании на каком-то языке могут без особых усилий применяться для интеграции StarBasic API с другими поддерживаемыми языками программирования ( Basic, C, C++, Java, Python).

9.1 Справочная информация по API OpenOffice.org и LibreOffice

Документация о сервисах, их свойствах, методах и интерфейсах сосредоточена в справочнике по OpenOffice.org API на сайте www.openoffice.org по ссылке:

Онлайн документация по Libreoffice API расположена по адресу:

9.2 Создание и обращение к объектам

Объект ThisComponent является глобальной переменной, предоставляющей доступ к активному документу. Следующая программа объявляет активный документ OpenOffice или LibreOffice как объект Doc:

Dim Doc As Object ‘Doc объявляется как объект

Doc = ThisComponent ‘ Активный документ получает имя Doc

9.3 Сервисы LibreOffice Basic

Все сервисы OOo Basic начинаются с com.sun.star и составляют большой перечень, из которого наиболее важные:

— com.sun.star.drawing содержит все сервисы, используемые для рисования линий, прямоугольников, кругов и т.д. (collects all services used for drawing line, rectangles, circles etc).

— com.sun.star.frame содержит сервисы Desktop(). Вы можете использовать этот сервис для открытия существующих документов или создания новых (contains the Desktop() service. You use this service to open existing documents or create new ones).

— com.sun.star.presentation предоставляет все сервисы для создания и работы с презентациями (provides all services to create and work with presentations).

— com.sun.star.sheet содержит сервисы для электронных таблиц. Сервис SpreadheetDocument() используется для работы с листами электронных таблиц (contains services for spreadsheets. Its SpreadheetDocument() service is used to work with spreadsheets).

— com.sun.star.table предоставляет все сервисы для таблиц в текстовых документах и электронных таблицах (provides all services for tables in text documents and spreadsheets).

— com.sun.star.text группы сервисов, связанных с текстовыми документами. Сервис TextDocument() предоставляет все интерфейсы, необходимые для работы с текстовыми документами (groups the services dealing with text documents. The TextDocument() service provides all interfaces needed to work with text documents).

9.4 Список всех сервисов, поддерживаемых LibreOffice Basic

Все поддерживаемые LibreOffice сервисы (1022 сервиса) отсортированы по алфавиту:

Источник

Первые шаги в работе с макросами

Язык макросов OpenOffice.org

Хранение макросов в библиотеке документов

Каждый документ OpenOffice. org является контейнером библиотек и способен содержать макросы и диалоги. Когда документ содержит макросы, которые он использует, обладание документом подразумевает обладание макросом. Это удобный метод распространения и хранения. Пошлите документ другому человеку или измените его размещение и макросы будут доступны и пригодны к употреблению.

Традиционный метод представления языка программирования, написание программы тем или иным образом выводящей сообщение «Hello World». Целые веб-сайты существуют с единственной целью – показать программы «Hello World» на стольких многих различных языках программирования, насколько возможно (например, смотри http://www2.latech.edu/

acm/HelloWorld.shtml. Не будем нарушать традиций, и первый показанный макрос будет вариацией на тему «Hello World».

Шаг 1. Создание библиотеки

Язык макросов в openoffice

ПримечаниеДо версии 2.0, OOo отображал «Мои макросы» и «Макросы OpenOffice.org» в одном списке. Новые диалоги являются более интуитивными, сохраняя очень подобные впечатление и ощущение. Поддержка редактирования и выполнения макросов на языках, кроме OOo Basic, также была добавлена; смотри Сервис > Макросы > Управление макросами > JavaScript, например.

Библиотека Standard для безымянного документа автоматически создается при создании нового документа. Документ в настоящее время не содержит никаких модулей – помните, что макросы сохраняются в модулях. Хотя Вы могли нажать на кнопку Создать для создания нового модуля, не делайте этого! Пункт этого раздела должен создать новую библиотеку.

СОВЕТНе храните ваши макросы в библиотеке Standard. Создайте новую библиотеку с описательным названием и храните там ваши макросы. Когда библиотека добавляется, она может перезаписать существующую библиотеку с тем же самым именем. Если все ваши библиотеки называют Standard, это препятствует Вам добавлять ваши библиотеки в другие контейнеры библиотек.

Нажмите на кнопку Управление, чтобы открыть диалог Управление макросами (17.2). Как и в диалоговом окне Макрос, здесь перечислены все контейнеры библиотек. На 17.2 библиотека Standard подсвечена в документе «Безымянный1»; прокрутите список вниз, чтобы найти «Безымянный1», если требуется. Диалог Управление макросами содержит несколько закладок и текущая закладка Модули. Поскольку название подразумевает, закладка Модули имеет дело с модулями. Вот описание пунктов этого диалога:

Язык макросов в openoffice

Цель этого раздела состоит в том, чтобы создать библиотеку названную осмысленно, которая содержится в документе «Безымянный1». Перейдите на вкладку Библиотеки, чтобы иметь дело с библиотеками ( рис. 17.3).

Язык макросов в openoffice

Когда эта часть диалога отображается, в списке Приложение/Документ выбран контейнер Мои макросы и диалоги. Выберите документ «Безымянный1» так, чтобы изменения проводились в безымянном документе. Кнопки, показанные на закладке Библиотеки, затрагивают библиотеки, а не модули. Вот их описание:

Язык макросов в openoffice

Нажмите кнопку Новая библиотека для создания новой библиотеки ( рис. 17.4). Хотя название по умолчанию «Library1», лучше выбрать значащее название, типа «MyFirstLibrary» или «TestLibrary». Нажмите OK, чтобы создать библиотеку.

Диалоговое окно Управление макросами теперь содержит вновь созданную библиотеку в списке Библиотек ( рис. 17.5).

Источник

Макросы, диалоги и библиотеки (Basic)

Одним из свойств Open Office.org, которое некоторые пользователи упускают из вида, является встроенный язык программирования OpenOffice.org Basic. Для чего нужно встраивать язык программирования в ваш текcтовый процессор? Именно для того, чтобы автоматизировать часто выполняемые задачи. Чай за тебя не приготовит, но позволит автоматизировать часто выполняемую работу с минимумом усилий.

Вы можете, например, захотеть сгенерировать данные из командной строки и представить их как таблицу в документе Writer или вы можете получить данные из других источников и сформатировать их для еженедельного отчета или письма клиенту. Каждая из этих задач требует значительных затрат времени, если их выполнять вручную, но OpenOffice.org Basic сможет помочь минимизировать время, которое вы проведете, выполняя рутинные вещи, и позволяет высвободить больше времени для более интересных занятий.

Создание макроса OpenOffice.org

Итак, как начать модификацию OpenOffice.org Writer с целью сделать его немножечко лучше? Для начала вы должны создать подпрограмму Basic или функцию, которые обычно именуются макросами.

Язык макросов в openoffice

Вам представится окно диалога, которое позволит выбрать новый макрос или выбрать уже существующий для редактирования. По умолчанию приложение создаст макрос с именем Main. Вы обнаружите, что находитесь в окне редактирования макроса и вы увидите нечто похожее на следующее:

Язык макросов в openoffice

Теперь вы сможете создать свой первый макрос. По традиции начнем с «Hello, world»

Язык макросов в openoffice

Выполнение макроса

Существует второй, более простой и полезный способ выполнения макроса после того, как вы его отладили. Вы можете назначить макрос пунктам меню, клавиатурным сокращениям и событиям.
Для того, чтобы назначить макрос и просмотреть полный список возможных действий, вернитесь обратно в окно Управление макросами. Когда вы нажмете кнопку Назначить, увидите все возможные опции.

Язык макросов в openoffice

Более сложный макрос

Теперь посмотрим на макрос OpenOffice.org Basic, который имеет практическое применение. Следующий пример макроса преобразует документ, который использует Английский язык Великобритании в Американский Английский диалект.

Язык макросов в openoffice

Если вы прежде использовали Visual Basic или VBScript в Windows, вы должны узнать основной формат и функциональность. Если нет, возможно, понадобится небольшое объяснение.

Записаны две подпрограммы: toUsaSpelling и doReplace. Подпрограмма toUsaSpelling создает два массива searchArray и replaceArray, содержащие английские слова и их американские эквиваленты. Она (подпрограмма) далее пошагово перебирает вышеупомянутый массив и вызывает подпрограмму doReplace, которая через две входные переменные и заменяет одно слово другим во всем документе OpenOffice.org.

OpenOffice.org Basic использует все типы привычных циклов и управляющих структур, которые вы найдете в любом языке программирования, наравне с некоторыми, пришедшими непосредственно из Visual Basic. Например, doReplace использует функцию ubound,котроая возвращает наибольший номер индекса массива. Эта функция полезна в циклах, так как в этом случае вам не надо отслеживать текущий размер массива.

Заметьте, что doReplace ссылается на ThisComponent. ThisComponent представляет текущий документ OpenOffice.org.

Следующее: Вставка информации из внешнего файла.

Заполнение данных в таблицы может стать самой затратной по времени частью при создании отчета, но таблицы делают документ более читабельным, так что стоит побеспокоиться об автоматизации процесса. Следующий макрос открывает файл и загружает данные из него в таблицу. Таким образом, таблица заполняется значениями полей имени пользователя и домашней директории из файла /etc/passwd:

Sub doPasswdTable
Dim filenumber As Integer
Dim lineNumber As Integer
Dim lineCount As Integer
Dim iLine As String
Dim file as String
Dim doc as object
Dim table as object
Dim cursor as object
Dim cellname as object
Dim cell as object
file = «/etc/passwd»
‘Get line count
lineCount = 0
filenumber = Freefile
Open file For Input As filenumber

While not EOF(filenumber)
Line Input #filenumber, iLine
If iLine <> «» then
lineCount = lineCount + 1
end if
wend
Close #filenumber

doc = thisComponent
cursor=doc.text.createTextCursor()
table=doc.createInstance(«com.sun.star.text.TextTable»)
table.initialize(lineCount+1,2)
doc.Text.insertTextContent(cursor,table,False)

cell = table.getCellByName(«A1»)
cell.string=»Username»
cell = table.getCellByName(«B1»)
cell.string=»Home Directory»

filenumber = Freefile
lineNumber = 2
Open file For Input As filenumber
While not EOF(filenumber)
Line Input #filenumber, iLine
If iLine <> «» then
Dim iArray
iArray = split(iLine,»:»)
cell = table.getCellByName(«A» & lineNumber)
cell.string=iArray(0)
cell = table.getCellByName(«B» & lineNumber)
cell.string=iArray(5)
lineNumber = lineNumber + 1
end if
wend
Close #filenumber
End Sub

Неочевидная деталь: синтаксис Basic не регистрозависимый. Поэтому оператор cell = table.getCellByName(«A» & lineNumber) будет выполняться так же, как CELL = table.getcellbyname(«A» & LINENUMBER). Мы применяем верхние и нижние регистры только для того, чтобы было легче читать.

Строка filenumber = Freefile присваивает значение уникального идентификатора ID переменной номера файла для того, чтобы вам не было необходимым запоминать любые другие уже назначенные ID.

Команда split особенно полезна. Она получает в качестве входных данных строку и возвращает массив подстрок данной строки, разбитой по разделителю, который вы указали. В вышеприведенном примере мы использовали двоеточие (:) для определения разделителя в файле паролей.

И последнее: одна строка может показаться странной на первый взгляд: Open file For Input As filenumber.
Она указывает на тот факт, что мы используем это как вход для подпрограммы, а не то, что мы собираемся в неё что-то передавать

В заключение:

Мы привели кратчайшее из возможных введений в использование Basic в OpenOffice.org Writer. Мы не рассматривали использование форм, вызовы из других документов, или то, как получать данные из баз данных.

Обсудить на форуме.

Источник

Видео

LibreOffice Macros. Урок 1 — Создание простого макроса и его запуск

LibreOffice Macros. Урок 1 — Создание простого макроса и его запуск

Как включить макросы в excel, wopd, Power Point, Open Office?

Как включить макросы в excel, wopd, Power Point, Open Office?

Занятие 8. Создание таблиц в OpenOffice Calc

Занятие 8. Создание таблиц в OpenOffice Calc

Вставка номера страницы в Openoffice.org LibreOffice Writer.wmv

Вставка номера страницы в Openoffice.org LibreOffice Writer.wmv

OpenOffice - Бесплатный аналог Microsoft Office

OpenOffice - Бесплатный аналог Microsoft Office

Форматирование изображений в OpenOffice.org Writer

Форматирование изображений в OpenOffice.org Writer

LibreOffice Macros. Урок 4 — Записываем макросы

LibreOffice Macros. Урок 4 — Записываем макросы

Редактор формул в OpenOffice.org Writer

Редактор формул в OpenOffice.org Writer

РусскийФокс 04 OpenOffice и LibreOffice

РусскийФокс 04 OpenOffice и LibreOffice

Создание таблиц в OpenOffice Calc

Создание таблиц в OpenOffice Calc
Поделиться или сохранить к себе:
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных, принимаю Политику конфиденциальности и условия Пользовательского соглашения.