SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
Programação de Macros com 
LibreOffice Basic 
Palestrante: 
Marcio Junior Vieira
Marcio Junior Vieira 
● 15 anos de experiência em informática, vivência em 
desenvolvimento e análise de sistemas de Gestão empresarial. 
● Trabalhando com Software Livre desde 2000 com serviços de 
consultoria e treinamento. 
● Graduado em Tecnologia em Informática(2004) e pós-graduado 
em Software Livre(2005) ambos pela UFPR. 
● Palestrante em diversos Congressos relacionados a Software 
Livre tais como: CONISLI, SOLISC, FISL, LATINOWARE, SFD, 
JDBR, Pentaho Day. 
● Fundador e atual CEO da Ambiente Livre. 
● Programador de Macros desde 2001
Uma empresa de Software 
Livre e Software Aberto
Sobre a Ambiente Livre 
● Fundada em 2004 com foco de atuar em 
consultoria com software livre. 
● 2009 ampliou sua soluções para atender ao 
mercado de gestão empresarial com software 
livre. 
● Tem 14 soluções distintas para geração de 
negócios com software livre.
Soluções 
● Consultoria. 
● Desenvolvimento. 
● Suporte. 
● Treinamento. 
● Transferência de Tecnologia.
Ecosistema
LibreOffice 
● Writer - É o editor de textos. 
● Calc - Planilha eletrônica com todos os recursos para 
calcular, analisar, resumir e apresentar seus dados em relatórios 
numéricos ou em gráficos. 
● Impress – Criação de apresentações multimídia 
eficientes. 
● Draw – Desenho vetoriais, produz desde simples 
diagramas até ilustrações com aparência 3D. 
● Math - Editor de fórmulas. Extremamente útil para 
trabalhos científicos ou escolares. 
● Base - Permite manipular bancos de dados.
Macros 
● Uma macro é um programa escrito numa 
linguagem suportada pelo LibreOffice com a 
finalidade de automatizar tarefas. Atualmente, 
as linguagens suportadas são: 
- LibreOffice Basic; 
- JavaScript; 
- JavaBeans; 
- Java; 
- Python;
LibreOffice Basic 
● Mantém as principais características do BASIC: sintaxe, tipos 
de dados, operadores, comandos, funções internas e 
organização geral do programa. 
● Permite o acesso a uma grande quantidade de objetos, com 
seus métodos e propriedades, específicos do LibreOffice. 
● IDE (Integrated Development Environment - Ambiente de 
Desenvolvimento Integrado) completo: edição de código fonte, 
verificação de erros, criação de diálogos e gerenciamento de 
bibliotecas.
Onde posso rodas as 
Macros
Organização de Macros
IDE Basic
IDE Basic - Inspecionar 
● Permite visualizar valores de variáveis das 
macros em tempo de execução.
IDE Basic - Chamadas 
● Mostra a chamada a procedimentos da macro 
em tempo de execução.
IDE Basic 
● Compilar – Compila o código-fonte Basic. 
● Executar o Basic – Executa uma macro até um 
pondo te interrupção. 
● Parar Macro - termina a execução de uma 
macro. Somente será ativado quando a execução da 
macro iniciar. 
● Passar ao Seguinte – Executa a macro 
linha a linha – passo a passo
IDE Basic 
● Ativar/desativar pontos de Interrupção - define 
um ponto de interrupção. 
● Gerenciar Pontos de Interrupção 
● Inserir código-fonte BASIC – Abre e insere o 
conteúdo de um arquivo Basic ( *.bas ) 
● Salvar BASIC – Salva o modulo com o código-fonte 
em arquivo Basic ( *.bas) 
● Importar caixa de dialogo
Características 
● Linguagem Interpretada 
● Case-insensitive (*1)
SubRotinas 
● Uma macro executa uma subrotina; 
● Subrotinas são blocos de instrução; 
● Uma subrotina começa com Sub e termina 
com End Sub. 
● Uma subrotina pode receber parâmetros.
Linhas de Programação 
● LongExpression = (Expression1 * Expression2) + _ 
● (Expression3 * Expression4) + _ 
● (Expression5 * Expression6) + _ 
● (Expression7 * Expression8)
Linhas de Programação 
a = 1 
a = a + 1 
a = a + 1 
● Ou 
a = 1 : a = a + 1 : a = a + 1
Comentários 
' este é um comentário da linha 
REM este é um comentário usando a chave REM 
<expressão> ' este é um comentário que por 
' ser extenso usa três linhas para 
' ser escrito.
Marcadores 
● Podem ser usados caracteres LATIN , 
números e underscores ( _ ) 
● Não pode ser usados caracteres especiais 
● O tamanho máximo é 255 Caracteres 
● Não é case-sensitive 
● Não é permitida acentuação
Marcadores 
● Surname ' OK 
● Surname5 ' OK 
● First Name ' Incorreto espaço não é permitido 
● DéjàVu ' acentuação não permitida 
● 5Surnames ' incorreto primeiro caracter não 
pode ser um numero 
● First,Name ' incorreta
Marcadores 
Dim [First Name] As String 
Dim [DéjàVu] As Integer 
[First Name] = "Andrew" 
[DéjàVu] = 2
Tipos de Variáveis 
● numéricas, 
● lógicas, 
● strings, 
● Datas e objetos.
Variáveis Implícitas 
● a = b + c 
● Option Explicit – Adicionado ao inicio 
das macros obriga que as variáveis 
sejam definidas.
Implícitas 
● MyVar = "Hello World" ' string 
● MyVar = 1 ' numero 
● MyVar = 1.0 ' float / decimal 
● MyVar = True 'Booleana
Varíaveis Dimencionais 
● É possível definir novos tipos, que combinam tipos 
existentes 
● Dim é a forma de declarar uma variável; Serve para 
declarar vetores, matrizes ou arrays. 
Dim x As tipo­da­variável 
Dim m(3,5) As tipo­da­variável 
● O que é declarado é o valor final da dimensão, que 
começa com zero. Então, uma declaração do tipo : 
Dim m(3,5) As Integer 
Declara uma matriz de (3 + 1) x (5 + 1) inteiros.
Variáveis Númericas 
● Integer; 
● Long Integer; 
● Decimal; 
● Single (ponto flutuante, precisão simples); 
● Double (ponto flutuante, precisão dupla); 
● Currency (para guardar valores monetários 
com alta precisão )
SIGIL 
● Variáveis também podem ser declaradas 
usando um sigil após o Dim. 
Dim x$ ' x é uma String 
Dim y% ' y é um Inteiro 
Dim z# ' z é um Double
Variáveis 
● String 
Dim sVar as String 
● Dim a,b,c,d as String 
● Boolean 
Dim bVar as Boolean 
● Date 
Dim dVar as Date
Simples Array 
● Dim MyArray(3)
Global – Privada - 
Constantes 
● Global 
Global A As Integer 
● Private 
Private C As Integer 
● Constante 
Const A = 10 
Const B As Double = 10
Operadores Matemáticos 
● + - Adição – Números , datas e strings 
● & - liga strings 
● - - Subtração – números , datas 
● * - Multiplicação de números. 
● / - Divisão de números 
●  - Divisão de números com um resultado inteiro 
(arredondado) 
● MOD - operação módulo (cálculo do resto de uma 
divisão) Ex.: MyVar = 3 MOD 2
Operadores de 
Comparação 
● = Igualdade de números, datas e strings 
● <> Desigualdade de números, datas e strings 
● > Maior que 
● >= Maior igual 
● < Menor que 
● <= Menor igual 
● LibreBasic não suporta comparador Like - VBA
If...Then...Else 
If A > 3 Then 
B = 2 
Else 
B = 0 
End If
Select...Case 
Select Case DayOfWeek 
Case 1: 
NameOfWeekday = "Domingo" 
Case 2: 
NameOfWeekday = "Segunda" 
Case 3: 
NameOfWeekday = "Terça" 
End Select
Repetição - For...Next 
Dim I 
For I = 1 To 10 
' ... Código para repetição 
Next I 
● Incrementação automática!
For Each 
Const d1 = 2 
Const d2 = 3 
Const d3 = 2 
Dim i 
Dim a(d1, d2, d3) 
For Each i In a() 
'... passará 36 vezes neste loop 
Next i
Do Until / Do loop 
Do Until A > 10 
' ... loop body 
Loop 
Do 
' ... loop body 
Loop While A > 10
Object 
● Usado para o tratamento de estruturas complexas. 
● Ao se rodar o BASIC em um documento do Writer ou 
Calc, o documento em si é um objeto, associado à 
variável ThisComponent. 
● Em um documento do Calc, a totalidade das planilhas é 
o objeto ThisComponent.Sheets. 
● Para acessar, por exemplo, uma planilha de nome 
"Alunos", pode-se declarar: 
Dim alunos As Object 
alunos = ThisComponent.Sheets.GetByName("Alunos")
Estruturas 
● Forma complexa de definir variáveis 
Type ... End Type 
Type Timedefutebol 
Nome as String 
V as Integer 
E as Integer 
D as Integer 
GP as Integer 
GC as Integer 
End Type
Estruturas 
Dim MeuCampeonato(10) as New Timedefutebol 
MeuCampeonato(1).Nome = "BROFFICE F.C." 
MeuCampeonato(1).V = 54 
MeuCampeonato(1).E = 1 
MeuCampeonato(1).D = 0 
MeuCampeonato(1).GP = 283 
MeuCampeonato(1).GC = 2
Segurança Execução de 
Macros 
● Por padrão a execução de macros encontra-se “protegido” na instalação 
do LibreOffice 
● Para ativar acesse o Menu Ferramentas - Opções –LibreOffice – 
Segurança – (Segurança de Macros...) 
● 
● 
● 
● 
● 
● 
●
Mensagem de alerta - 
Segurança
LibreOffice Basic 
● Procedimentos 
● Funções 
● Recursos de recursividade 
● Conversões de Tipo 
● Manipulação e Formatação de String 
● Acesso ao sistema de arquivos/diretório 
● Comandos de desvio 
●
API LibreOffice 
● Serviços. 
● Objetos. 
● Interfaces. 
● Métodos 
● Propriedades
API LibreOffice 
● A chave para a criação de programas que usam 
a API do LibreOffice são os serviços. 
● Um serviço é uma especificação de um objeto, 
que engloba um conjunto de interfaces e 
propriedades. 
● Uma interface é uma coleção de métodos. 
● Uma propriedade é um valor que determina uma 
característica de um serviço e é formada por um 
nome e um valor.
Universal Network Objects 
(UNO) 
● A variável de objeto deve ser criada e inicializado para que ele 
possa ser usado. CreateUnoService 
Dim Obj As Object 
Obj = createUnoService("com.sun.star.frame.Desktop")
UNO
VBA X LOBasic 
● A estrutura de um objeto no VBA é definida 
pela classe à qual ele pertence 
● Em LOBasic a estrutura é definida através dos 
serviços que ele suporta. 
● Um objeto VBA é sempre atribuído a 
exatamente uma única classe. 
● O objeto LOBasic objeto pode ter apoio de 
vários serviços.
Termologia VBA X LOBasic 
● VBA OOoBasic 
● O objeto documento 
● Workbook - 
SpreadsheetDocument 
● Páginas Individuais 
● Worksheets - Sheet
VBA to LOBasic 
● http://www.business-spreadsheets.com/vba2oo.asp 
●
Propriedades 
● As propriedades são definidas por meio de uma 
atribuição simples: 
Document.Title = "{{OOo}} Treinamento OOoBasic" 
Document.Filename = "treina_ooobasic.odt" 
● A propriedade, assim como uma variável normal, tem 
um tipo que define que valores ela pode registrar. 
● As propriedades Filename e Title são do tipo string.
Métodos 
● Os métodos podem ser entendidos como 
funções que se relacionam diretamente entre 
objeto que fazem chamadas uns aos outros. 
● O Objeto documento poderia, por exemplo, 
fornecem um método Save, que pode ser 
chamado como segue: 
Document.Save()
Módulos 
● com.sun.star.awt - interface do usuário 
● com.sun.star.beans - acesso a propriedades 
● com.sun.star.container - coleções e recipientes 
● com.sun.star.document - documentos do office 
● com.sun.star.drawing - desenho 
● com.sun.star.text - documentos texto 
● com.sun.star.sdb - banco de dados 
● com.sun.star.sheet - planilhas 
● com.sun.star.util - utilidade diversa
Trabalhando com planilhas 
● ThisComponent - documento em que a 
macro está sendo executada 
● <Objeto>.Sheets.(n) - ' recebe as pastas do 
documento 
● <Objeto>.GetCellByPosition(Coluna, Linha) 
● <objetocelula>.Value 'valor na célula
Criando Planilhas 
Sheet = 
Doc.createInstance("com.sun.star.sheet.Sprea 
dsheet") 
Doc.Sheets.insertByName("PlanilhaN", Sheet)
Linhas e Colunas nas 
Planilhas 
● Sheet = Doc.Sheets(0) 
● FirstCol = Sheet.Columns(0) 
● FirstRow = Sheet.Rows(0) 
● Nota - As listas de linhas e colunas podem ser 
acessados através de um índice em LOBasic. 
Diferente do VBA, a primeira coluna tem 
índice 0 e não o Índice 1.
Células 
Dim Doc As Object 
Dim Sheet As Object 
Dim Cell As Object 
Doc = Thiscomponent 
Sheet = Doc.Sheets(0) 
Cell = Sheet.getCellByPosition(0, 0) 
Cell.String = "Test" 
Cell.Value = 100 
Cell.Formula = "=A1+A2"
Gráficos 
Dim Rect As New com.sun.star.awt.Rectangle 
Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress 
Doc = ThisComponent 
Charts = Doc.Sheets(0).Charts 
Rect.X = 8000 
Rect.Y = 1000 
Rect.Width = 10000 
Rect.Height = 7000 
RangeAddress(0).Sheet = 0 
RangeAddress(0).StartColumn = 0 
RangeAddress(0).StartRow = 0 
RangeAddress(0).EndColumn = 2 
RangeAddress(0).EndRow = 12 
Charts.addNewByName("MeuGrafico", Rect, RangeAddress(), True, 
True)
Shell 
● Shell(Pathname, Windowstyle, Param) 
● Windowstyle 
0 – Programa recebe o foco e inicia janela escondida 
1 – programa recebe o foco e inicia janela normal 
● Param: Parametro enviado ao programa externo. 
● Paramâtros opcionais 
● Exemplo 
Shell (“calc”)
IDE - Dialog
Banco da Dados - Base 
● Connection = 
DataSource.GetConnection("usuariodobanco", 
"senhadobanco") 
● ... 
● Statement = Connection.createStatement() 
● ResultSet = Statement.executeQuery(" 
COMANDO SQL DESEJADO") '
ResultSet - Navegando nos 
registro 
If Not IsNull(ResultSet) Then 
While ResultSet.next 
MsgBox ResultSet.getString(1) 
Wend 
● next() – próximo registro de dados. 
● previous() – registro de dados anterior. 
● first() – primeiro registro de dados. 
● last() – último registro de dados. 
● beforeFirst() – registro de dados anterior ao primeiro. 
● afterLast() – próximo registro de dados após o último.
Eventos
Gravação de Macros 
● Permite gravar ações no LibreOffice em 
Macros 
● Dever ser ativados recursos experimentais 
● Tem algumas limitações.
Referências 
● LibreOffice 3 Basic Guide
Contatos 
● e-mail: 
● marcio @ ambientelivre.com.br 
● http://twitter.com/ambientelivre 
● @ambientelivre 
● @marciojvieira 
● Blog 
blogs.ambientelivre.com.br/marcio

Contenu connexe

Tendances

POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosLudimila Monjardim Casagrande
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01John Godoi
 
Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Julian Correa
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosLudimila Monjardim Casagrande
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Marcos Castro
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...Manuel Menezes de Sequeira
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaCharles Jungbeck
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de ProgramaçãoManuel Menezes de Sequeira
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...Manuel Menezes de Sequeira
 

Tendances (20)

POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a ObjetosPOO - 01 - Introdução ao Paradigma Orientado a Objetos
POO - 01 - Introdução ao Paradigma Orientado a Objetos
 
Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01Java e orientação a objetos - aula 01
Java e orientação a objetos - aula 01
 
POO - 17 - Interfaces
POO - 17 - InterfacesPOO - 17 - Interfaces
POO - 17 - Interfaces
 
Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2Fundamentos do .NET Framework - Parte 2
Fundamentos do .NET Framework - Parte 2
 
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
8. Classes e instâncias; Cadeias de caracteres – Fundamentos de Programação
 
POO - 16 - Polimorfismo
POO - 16 - PolimorfismoPOO - 16 - Polimorfismo
POO - 16 - Polimorfismo
 
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a ObjetosPOO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
POO - 02 - Fundamentos da Linguagem Java e da Orientação a Objetos
 
Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)Introdução a linguagem C# (CSharp)
Introdução a linguagem C# (CSharp)
 
Java sintaxe
Java sintaxeJava sintaxe
Java sintaxe
 
Algoritmos Aula 03
Algoritmos Aula 03Algoritmos Aula 03
Algoritmos Aula 03
 
Unidade04
Unidade04Unidade04
Unidade04
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Amarração e escopo
Amarração e escopoAmarração e escopo
Amarração e escopo
 
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
13. Polimorfismo de subtipos; Análise, desenho e implementação – Fundamentos ...
 
Conceitos Básicos de OO e Java
Conceitos Básicos de OO e JavaConceitos Básicos de OO e Java
Conceitos Básicos de OO e Java
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
POO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de DesenvolvimentoPOO - 05 - Ambiente de Desenvolvimento
POO - 05 - Ambiente de Desenvolvimento
 
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
12. Paradigmas da programação; Programação orientada por objectos; Pacotes – ...
 
Java: Introdução
Java: IntroduçãoJava: Introdução
Java: Introdução
 
Curso Ruby
Curso RubyCurso Ruby
Curso Ruby
 

Similaire à Programação de Macros com LibreOffice Basic

Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascalJocelma Rios
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em RubyDaniel Andrade
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Flávio Ribeiro
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Elvis Araújo
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfValter moreira
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfAntonioSvio1
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Julio Monteiro
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Robson Ferreira
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaSérgio Souza Costa
 
TDC2016SP - Kotlin 1.0: Evolua seu código Java
TDC2016SP - Kotlin 1.0: Evolua seu código JavaTDC2016SP - Kotlin 1.0: Evolua seu código Java
TDC2016SP - Kotlin 1.0: Evolua seu código Javatdc-globalcode
 
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesKotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesAlex Magalhaes
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação12anogolega
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoronaldoferraz
 

Similaire à Programação de Macros com LibreOffice Basic (20)

Lógica de programação pascal
Lógica de programação   pascalLógica de programação   pascal
Lógica de programação pascal
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em Ruby
 
Aula python
Aula pythonAula python
Aula python
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1Implementação de Aplicações Móveis e Jogos com Python - Aula 1
Implementação de Aplicações Móveis e Jogos com Python - Aula 1
 
Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2Linguagem de Programação Estruturada com Java-Aula2
Linguagem de Programação Estruturada com Java-Aula2
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
 
Python_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdfPython_2018-03-02-MC102KLMN-Aula02.pdf
Python_2018-03-02-MC102KLMN-Aula02.pdf
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
 
Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)Ruby, Rails e Diversão (Campus Party Brasil 2009)
Ruby, Rails e Diversão (Campus Party Brasil 2009)
 
2006 - Linguagem VB.ppt
2006 - Linguagem VB.ppt2006 - Linguagem VB.ppt
2006 - Linguagem VB.ppt
 
Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2Conceitos e técnicas de programação aula 2
Conceitos e técnicas de programação aula 2
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo Lua
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
 
Visualg
VisualgVisualg
Visualg
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
 
TDC2016SP - Kotlin 1.0: Evolua seu código Java
TDC2016SP - Kotlin 1.0: Evolua seu código JavaTDC2016SP - Kotlin 1.0: Evolua seu código Java
TDC2016SP - Kotlin 1.0: Evolua seu código Java
 
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex MagalhaesKotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
Kotlin - Evolua seu código Java (TDC-2016) Alex Magalhaes
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
 
Criando sua própria linguagem de programação
Criando sua própria linguagem de programaçãoCriando sua própria linguagem de programação
Criando sua própria linguagem de programação
 
Python
PythonPython
Python
 

Programação de Macros com LibreOffice Basic

  • 1. Programação de Macros com LibreOffice Basic Palestrante: Marcio Junior Vieira
  • 2. Marcio Junior Vieira ● 15 anos de experiência em informática, vivência em desenvolvimento e análise de sistemas de Gestão empresarial. ● Trabalhando com Software Livre desde 2000 com serviços de consultoria e treinamento. ● Graduado em Tecnologia em Informática(2004) e pós-graduado em Software Livre(2005) ambos pela UFPR. ● Palestrante em diversos Congressos relacionados a Software Livre tais como: CONISLI, SOLISC, FISL, LATINOWARE, SFD, JDBR, Pentaho Day. ● Fundador e atual CEO da Ambiente Livre. ● Programador de Macros desde 2001
  • 3. Uma empresa de Software Livre e Software Aberto
  • 4. Sobre a Ambiente Livre ● Fundada em 2004 com foco de atuar em consultoria com software livre. ● 2009 ampliou sua soluções para atender ao mercado de gestão empresarial com software livre. ● Tem 14 soluções distintas para geração de negócios com software livre.
  • 5. Soluções ● Consultoria. ● Desenvolvimento. ● Suporte. ● Treinamento. ● Transferência de Tecnologia.
  • 7. LibreOffice ● Writer - É o editor de textos. ● Calc - Planilha eletrônica com todos os recursos para calcular, analisar, resumir e apresentar seus dados em relatórios numéricos ou em gráficos. ● Impress – Criação de apresentações multimídia eficientes. ● Draw – Desenho vetoriais, produz desde simples diagramas até ilustrações com aparência 3D. ● Math - Editor de fórmulas. Extremamente útil para trabalhos científicos ou escolares. ● Base - Permite manipular bancos de dados.
  • 8. Macros ● Uma macro é um programa escrito numa linguagem suportada pelo LibreOffice com a finalidade de automatizar tarefas. Atualmente, as linguagens suportadas são: - LibreOffice Basic; - JavaScript; - JavaBeans; - Java; - Python;
  • 9. LibreOffice Basic ● Mantém as principais características do BASIC: sintaxe, tipos de dados, operadores, comandos, funções internas e organização geral do programa. ● Permite o acesso a uma grande quantidade de objetos, com seus métodos e propriedades, específicos do LibreOffice. ● IDE (Integrated Development Environment - Ambiente de Desenvolvimento Integrado) completo: edição de código fonte, verificação de erros, criação de diálogos e gerenciamento de bibliotecas.
  • 10. Onde posso rodas as Macros
  • 13. IDE Basic - Inspecionar ● Permite visualizar valores de variáveis das macros em tempo de execução.
  • 14. IDE Basic - Chamadas ● Mostra a chamada a procedimentos da macro em tempo de execução.
  • 15. IDE Basic ● Compilar – Compila o código-fonte Basic. ● Executar o Basic – Executa uma macro até um pondo te interrupção. ● Parar Macro - termina a execução de uma macro. Somente será ativado quando a execução da macro iniciar. ● Passar ao Seguinte – Executa a macro linha a linha – passo a passo
  • 16. IDE Basic ● Ativar/desativar pontos de Interrupção - define um ponto de interrupção. ● Gerenciar Pontos de Interrupção ● Inserir código-fonte BASIC – Abre e insere o conteúdo de um arquivo Basic ( *.bas ) ● Salvar BASIC – Salva o modulo com o código-fonte em arquivo Basic ( *.bas) ● Importar caixa de dialogo
  • 17. Características ● Linguagem Interpretada ● Case-insensitive (*1)
  • 18. SubRotinas ● Uma macro executa uma subrotina; ● Subrotinas são blocos de instrução; ● Uma subrotina começa com Sub e termina com End Sub. ● Uma subrotina pode receber parâmetros.
  • 19. Linhas de Programação ● LongExpression = (Expression1 * Expression2) + _ ● (Expression3 * Expression4) + _ ● (Expression5 * Expression6) + _ ● (Expression7 * Expression8)
  • 20. Linhas de Programação a = 1 a = a + 1 a = a + 1 ● Ou a = 1 : a = a + 1 : a = a + 1
  • 21. Comentários ' este é um comentário da linha REM este é um comentário usando a chave REM <expressão> ' este é um comentário que por ' ser extenso usa três linhas para ' ser escrito.
  • 22. Marcadores ● Podem ser usados caracteres LATIN , números e underscores ( _ ) ● Não pode ser usados caracteres especiais ● O tamanho máximo é 255 Caracteres ● Não é case-sensitive ● Não é permitida acentuação
  • 23. Marcadores ● Surname ' OK ● Surname5 ' OK ● First Name ' Incorreto espaço não é permitido ● DéjàVu ' acentuação não permitida ● 5Surnames ' incorreto primeiro caracter não pode ser um numero ● First,Name ' incorreta
  • 24. Marcadores Dim [First Name] As String Dim [DéjàVu] As Integer [First Name] = "Andrew" [DéjàVu] = 2
  • 25. Tipos de Variáveis ● numéricas, ● lógicas, ● strings, ● Datas e objetos.
  • 26. Variáveis Implícitas ● a = b + c ● Option Explicit – Adicionado ao inicio das macros obriga que as variáveis sejam definidas.
  • 27. Implícitas ● MyVar = "Hello World" ' string ● MyVar = 1 ' numero ● MyVar = 1.0 ' float / decimal ● MyVar = True 'Booleana
  • 28. Varíaveis Dimencionais ● É possível definir novos tipos, que combinam tipos existentes ● Dim é a forma de declarar uma variável; Serve para declarar vetores, matrizes ou arrays. Dim x As tipo­da­variável Dim m(3,5) As tipo­da­variável ● O que é declarado é o valor final da dimensão, que começa com zero. Então, uma declaração do tipo : Dim m(3,5) As Integer Declara uma matriz de (3 + 1) x (5 + 1) inteiros.
  • 29. Variáveis Númericas ● Integer; ● Long Integer; ● Decimal; ● Single (ponto flutuante, precisão simples); ● Double (ponto flutuante, precisão dupla); ● Currency (para guardar valores monetários com alta precisão )
  • 30. SIGIL ● Variáveis também podem ser declaradas usando um sigil após o Dim. Dim x$ ' x é uma String Dim y% ' y é um Inteiro Dim z# ' z é um Double
  • 31. Variáveis ● String Dim sVar as String ● Dim a,b,c,d as String ● Boolean Dim bVar as Boolean ● Date Dim dVar as Date
  • 32. Simples Array ● Dim MyArray(3)
  • 33. Global – Privada - Constantes ● Global Global A As Integer ● Private Private C As Integer ● Constante Const A = 10 Const B As Double = 10
  • 34. Operadores Matemáticos ● + - Adição – Números , datas e strings ● & - liga strings ● - - Subtração – números , datas ● * - Multiplicação de números. ● / - Divisão de números ● - Divisão de números com um resultado inteiro (arredondado) ● MOD - operação módulo (cálculo do resto de uma divisão) Ex.: MyVar = 3 MOD 2
  • 35. Operadores de Comparação ● = Igualdade de números, datas e strings ● <> Desigualdade de números, datas e strings ● > Maior que ● >= Maior igual ● < Menor que ● <= Menor igual ● LibreBasic não suporta comparador Like - VBA
  • 36. If...Then...Else If A > 3 Then B = 2 Else B = 0 End If
  • 37. Select...Case Select Case DayOfWeek Case 1: NameOfWeekday = "Domingo" Case 2: NameOfWeekday = "Segunda" Case 3: NameOfWeekday = "Terça" End Select
  • 38. Repetição - For...Next Dim I For I = 1 To 10 ' ... Código para repetição Next I ● Incrementação automática!
  • 39. For Each Const d1 = 2 Const d2 = 3 Const d3 = 2 Dim i Dim a(d1, d2, d3) For Each i In a() '... passará 36 vezes neste loop Next i
  • 40. Do Until / Do loop Do Until A > 10 ' ... loop body Loop Do ' ... loop body Loop While A > 10
  • 41. Object ● Usado para o tratamento de estruturas complexas. ● Ao se rodar o BASIC em um documento do Writer ou Calc, o documento em si é um objeto, associado à variável ThisComponent. ● Em um documento do Calc, a totalidade das planilhas é o objeto ThisComponent.Sheets. ● Para acessar, por exemplo, uma planilha de nome "Alunos", pode-se declarar: Dim alunos As Object alunos = ThisComponent.Sheets.GetByName("Alunos")
  • 42. Estruturas ● Forma complexa de definir variáveis Type ... End Type Type Timedefutebol Nome as String V as Integer E as Integer D as Integer GP as Integer GC as Integer End Type
  • 43. Estruturas Dim MeuCampeonato(10) as New Timedefutebol MeuCampeonato(1).Nome = "BROFFICE F.C." MeuCampeonato(1).V = 54 MeuCampeonato(1).E = 1 MeuCampeonato(1).D = 0 MeuCampeonato(1).GP = 283 MeuCampeonato(1).GC = 2
  • 44. Segurança Execução de Macros ● Por padrão a execução de macros encontra-se “protegido” na instalação do LibreOffice ● Para ativar acesse o Menu Ferramentas - Opções –LibreOffice – Segurança – (Segurança de Macros...) ● ● ● ● ● ● ●
  • 45. Mensagem de alerta - Segurança
  • 46. LibreOffice Basic ● Procedimentos ● Funções ● Recursos de recursividade ● Conversões de Tipo ● Manipulação e Formatação de String ● Acesso ao sistema de arquivos/diretório ● Comandos de desvio ●
  • 47. API LibreOffice ● Serviços. ● Objetos. ● Interfaces. ● Métodos ● Propriedades
  • 48. API LibreOffice ● A chave para a criação de programas que usam a API do LibreOffice são os serviços. ● Um serviço é uma especificação de um objeto, que engloba um conjunto de interfaces e propriedades. ● Uma interface é uma coleção de métodos. ● Uma propriedade é um valor que determina uma característica de um serviço e é formada por um nome e um valor.
  • 49. Universal Network Objects (UNO) ● A variável de objeto deve ser criada e inicializado para que ele possa ser usado. CreateUnoService Dim Obj As Object Obj = createUnoService("com.sun.star.frame.Desktop")
  • 50. UNO
  • 51. VBA X LOBasic ● A estrutura de um objeto no VBA é definida pela classe à qual ele pertence ● Em LOBasic a estrutura é definida através dos serviços que ele suporta. ● Um objeto VBA é sempre atribuído a exatamente uma única classe. ● O objeto LOBasic objeto pode ter apoio de vários serviços.
  • 52. Termologia VBA X LOBasic ● VBA OOoBasic ● O objeto documento ● Workbook - SpreadsheetDocument ● Páginas Individuais ● Worksheets - Sheet
  • 53. VBA to LOBasic ● http://www.business-spreadsheets.com/vba2oo.asp ●
  • 54. Propriedades ● As propriedades são definidas por meio de uma atribuição simples: Document.Title = "{{OOo}} Treinamento OOoBasic" Document.Filename = "treina_ooobasic.odt" ● A propriedade, assim como uma variável normal, tem um tipo que define que valores ela pode registrar. ● As propriedades Filename e Title são do tipo string.
  • 55. Métodos ● Os métodos podem ser entendidos como funções que se relacionam diretamente entre objeto que fazem chamadas uns aos outros. ● O Objeto documento poderia, por exemplo, fornecem um método Save, que pode ser chamado como segue: Document.Save()
  • 56. Módulos ● com.sun.star.awt - interface do usuário ● com.sun.star.beans - acesso a propriedades ● com.sun.star.container - coleções e recipientes ● com.sun.star.document - documentos do office ● com.sun.star.drawing - desenho ● com.sun.star.text - documentos texto ● com.sun.star.sdb - banco de dados ● com.sun.star.sheet - planilhas ● com.sun.star.util - utilidade diversa
  • 57. Trabalhando com planilhas ● ThisComponent - documento em que a macro está sendo executada ● <Objeto>.Sheets.(n) - ' recebe as pastas do documento ● <Objeto>.GetCellByPosition(Coluna, Linha) ● <objetocelula>.Value 'valor na célula
  • 58. Criando Planilhas Sheet = Doc.createInstance("com.sun.star.sheet.Sprea dsheet") Doc.Sheets.insertByName("PlanilhaN", Sheet)
  • 59. Linhas e Colunas nas Planilhas ● Sheet = Doc.Sheets(0) ● FirstCol = Sheet.Columns(0) ● FirstRow = Sheet.Rows(0) ● Nota - As listas de linhas e colunas podem ser acessados através de um índice em LOBasic. Diferente do VBA, a primeira coluna tem índice 0 e não o Índice 1.
  • 60. Células Dim Doc As Object Dim Sheet As Object Dim Cell As Object Doc = Thiscomponent Sheet = Doc.Sheets(0) Cell = Sheet.getCellByPosition(0, 0) Cell.String = "Test" Cell.Value = 100 Cell.Formula = "=A1+A2"
  • 61. Gráficos Dim Rect As New com.sun.star.awt.Rectangle Dim RangeAddress(0) As New com.sun.star.table.CellRangeAddress Doc = ThisComponent Charts = Doc.Sheets(0).Charts Rect.X = 8000 Rect.Y = 1000 Rect.Width = 10000 Rect.Height = 7000 RangeAddress(0).Sheet = 0 RangeAddress(0).StartColumn = 0 RangeAddress(0).StartRow = 0 RangeAddress(0).EndColumn = 2 RangeAddress(0).EndRow = 12 Charts.addNewByName("MeuGrafico", Rect, RangeAddress(), True, True)
  • 62. Shell ● Shell(Pathname, Windowstyle, Param) ● Windowstyle 0 – Programa recebe o foco e inicia janela escondida 1 – programa recebe o foco e inicia janela normal ● Param: Parametro enviado ao programa externo. ● Paramâtros opcionais ● Exemplo Shell (“calc”)
  • 64. Banco da Dados - Base ● Connection = DataSource.GetConnection("usuariodobanco", "senhadobanco") ● ... ● Statement = Connection.createStatement() ● ResultSet = Statement.executeQuery(" COMANDO SQL DESEJADO") '
  • 65. ResultSet - Navegando nos registro If Not IsNull(ResultSet) Then While ResultSet.next MsgBox ResultSet.getString(1) Wend ● next() – próximo registro de dados. ● previous() – registro de dados anterior. ● first() – primeiro registro de dados. ● last() – último registro de dados. ● beforeFirst() – registro de dados anterior ao primeiro. ● afterLast() – próximo registro de dados após o último.
  • 67. Gravação de Macros ● Permite gravar ações no LibreOffice em Macros ● Dever ser ativados recursos experimentais ● Tem algumas limitações.
  • 69. Contatos ● e-mail: ● marcio @ ambientelivre.com.br ● http://twitter.com/ambientelivre ● @ambientelivre ● @marciojvieira ● Blog blogs.ambientelivre.com.br/marcio