SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

Mais procurados

ColocaçãO Pronominal
ColocaçãO PronominalColocaçãO Pronominal
ColocaçãO Pronominal
guest0cbfe
 
Regência nominal e verbal
Regência nominal e verbalRegência nominal e verbal
Regência nominal e verbal
Sadrak Silva
 
Sintaxe Volume 1
Sintaxe Volume 1Sintaxe Volume 1
Sintaxe Volume 1
ProfFernandaBraga
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
Evonaldo Gonçalves Vanny
 
SLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICESLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICE
Liana Évily
 
Normas ABNT Apresentação de trabalhos acadêmicos
Normas ABNT Apresentação de trabalhos acadêmicosNormas ABNT Apresentação de trabalhos acadêmicos
Normas ABNT Apresentação de trabalhos acadêmicos
Patrícia Éderson Dias
 
Uso dos porquês
Uso dos porquêsUso dos porquês
Uso dos porquês
Sabrina Paiva
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
Mauro Pereira
 
Concordancia verbal-slide-adriana
Concordancia verbal-slide-adrianaConcordancia verbal-slide-adriana
Concordancia verbal-slide-adriana
Lucilene Barcelos
 
Gerenciamento das comunicações do Projeto
Gerenciamento das comunicações do Projeto Gerenciamento das comunicações do Projeto
Gerenciamento das comunicações do Projeto
Huxley Dias
 
Aula 10 maquinade turing
Aula 10   maquinade turingAula 10   maquinade turing
Aula 10 maquinade turing
wab030
 
Conclusao - Dissertação (ENEM)
Conclusao - Dissertação (ENEM)Conclusao - Dissertação (ENEM)
Conclusao - Dissertação (ENEM)
Cynthia Funchal
 
Windows e seus aplicativos
Windows e seus aplicativosWindows e seus aplicativos
Windows e seus aplicativos
Universidade Federal do Oeste do Pará
 
Ortografia
OrtografiaOrtografia
Ortografia
Jader Windson
 
Libreoffice
LibreofficeLibreoffice
Libreoffice
Denis Katko
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
Gleydson Sousa
 
Preposições
PreposiçõesPreposições
Preposições
Alice Silva
 
Concordancia verbal e nominal
Concordancia verbal e nominalConcordancia verbal e nominal
Concordancia verbal e nominal
Rebeca Kaus
 
Técnicas para criação de slides
Técnicas para criação de slides Técnicas para criação de slides
Técnicas para criação de slides
Márcio Roberto de Mattos
 
Coesão e coerência
Coesão e coerênciaCoesão e coerência
Coesão e coerência
Cynthia Funchal
 

Mais procurados (20)

ColocaçãO Pronominal
ColocaçãO PronominalColocaçãO Pronominal
ColocaçãO Pronominal
 
Regência nominal e verbal
Regência nominal e verbalRegência nominal e verbal
Regência nominal e verbal
 
Sintaxe Volume 1
Sintaxe Volume 1Sintaxe Volume 1
Sintaxe Volume 1
 
Algoritmos em portugol
Algoritmos em portugolAlgoritmos em portugol
Algoritmos em portugol
 
SLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICESLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICE
 
Normas ABNT Apresentação de trabalhos acadêmicos
Normas ABNT Apresentação de trabalhos acadêmicosNormas ABNT Apresentação de trabalhos acadêmicos
Normas ABNT Apresentação de trabalhos acadêmicos
 
Uso dos porquês
Uso dos porquêsUso dos porquês
Uso dos porquês
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Concordancia verbal-slide-adriana
Concordancia verbal-slide-adrianaConcordancia verbal-slide-adriana
Concordancia verbal-slide-adriana
 
Gerenciamento das comunicações do Projeto
Gerenciamento das comunicações do Projeto Gerenciamento das comunicações do Projeto
Gerenciamento das comunicações do Projeto
 
Aula 10 maquinade turing
Aula 10   maquinade turingAula 10   maquinade turing
Aula 10 maquinade turing
 
Conclusao - Dissertação (ENEM)
Conclusao - Dissertação (ENEM)Conclusao - Dissertação (ENEM)
Conclusao - Dissertação (ENEM)
 
Windows e seus aplicativos
Windows e seus aplicativosWindows e seus aplicativos
Windows e seus aplicativos
 
Ortografia
OrtografiaOrtografia
Ortografia
 
Libreoffice
LibreofficeLibreoffice
Libreoffice
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Preposições
PreposiçõesPreposições
Preposições
 
Concordancia verbal e nominal
Concordancia verbal e nominalConcordancia verbal e nominal
Concordancia verbal e nominal
 
Técnicas para criação de slides
Técnicas para criação de slides Técnicas para criação de slides
Técnicas para criação de slides
 
Coesão e coerência
Coesão e coerênciaCoesão e coerência
Coesão e coerência
 

Semelhante a 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 pascal
Jocelma Rios
 
Introdução à programação em Ruby
Introdução à programação em RubyIntrodução à programação em Ruby
Introdução à programação em Ruby
Daniel Andrade
 
aula__tecnica_de_programação_algoritmo.ppt
aula__tecnica_de_programação_algoritmo.pptaula__tecnica_de_programação_algoritmo.ppt
aula__tecnica_de_programação_algoritmo.ppt
ritaporfrio
 
Aula python
Aula pythonAula 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
Flá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-Aula2
Elvis Araújo
 
Introducao Google GO
Introducao Google GOIntroducao Google GO
Introducao Google GO
Eder Magalhães
 
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
Valter moreira
 
JS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdfJS FUNDAMENTOS - AULA 01.pdf
JS FUNDAMENTOS - AULA 01.pdf
AntonioSvio1
 
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
 
2006 - Linguagem VB.ppt
2006 - Linguagem VB.ppt2006 - Linguagem VB.ppt
2006 - Linguagem VB.ppt
Ricardo Guerra Freitas
 
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
Robson 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 Lua
Sérgio Souza Costa
 
Ruby & Rails
Ruby & RailsRuby & Rails
Ruby & Rails
Sergio Henrique
 
Visualg
VisualgVisualg
Visualg
Pedro Silva
 
Aula02 - JavaScript
Aula02 - JavaScriptAula02 - JavaScript
Aula02 - JavaScript
Jorge Ávila Miranda
 
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
tdc-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 Magalhaes
Alex Magalhaes
 
Introdução à programação
Introdução à programaçãoIntrodução à programação
Introdução à programação
12anogolega
 
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
ronaldoferraz
 

Semelhante a 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__tecnica_de_programação_algoritmo.ppt
aula__tecnica_de_programação_algoritmo.pptaula__tecnica_de_programação_algoritmo.ppt
aula__tecnica_de_programação_algoritmo.ppt
 
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
 

Mais de Ambiente Livre

Low Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine IntelligenceLow Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine Intelligence
Ambiente Livre
 
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.  Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
Ambiente Livre
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
Ambiente Livre
 
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
Ambiente Livre
 
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
Ambiente Livre
 
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
Ambiente Livre
 
Metodologia Hacker de Ensino na Ambiente Livre
Metodologia Hacker de Ensino na Ambiente LivreMetodologia Hacker de Ensino na Ambiente Livre
Metodologia Hacker de Ensino na Ambiente Livre
Ambiente Livre
 
Integrando o Drupal com o ECM Alfresco usando CMIS
Integrando o Drupal com o ECM Alfresco usando CMISIntegrando o Drupal com o ECM Alfresco usando CMIS
Integrando o Drupal com o ECM Alfresco usando CMIS
Ambiente Livre
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Ambiente Livre
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Ambiente Livre
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
Ambiente Livre
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Ambiente Livre
 
Pentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data LakesPentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data Lakes
Ambiente Livre
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
Ambiente Livre
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
Ambiente Livre
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data Lakes
Ambiente Livre
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Ambiente Livre
 
SEBRAETEC - Inteligência Empresarial com CRM BI ECM e BPM
SEBRAETEC -  Inteligência Empresarial com CRM BI ECM e BPMSEBRAETEC -  Inteligência Empresarial com CRM BI ECM e BPM
SEBRAETEC - Inteligência Empresarial com CRM BI ECM e BPM
Ambiente Livre
 
Carreira Profissional e Certificação de um Analista de BI Pentaho
Carreira Profissional e Certificação de um Analista de BI PentahoCarreira Profissional e Certificação de um Analista de BI Pentaho
Carreira Profissional e Certificação de um Analista de BI Pentaho
Ambiente Livre
 
Suporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho ReportSuporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho Report
Ambiente Livre
 

Mais de Ambiente Livre (20)

Low Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine IntelligenceLow Code Data Science with Pentaho Machine Intelligence
Low Code Data Science with Pentaho Machine Intelligence
 
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.  Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
Orquestrando HBase, Cassandra e MongoDB com o Pentaho Big Data Analytics.
 
Apache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big DataApache Flink a Quarta Geração do Big Data
Apache Flink a Quarta Geração do Big Data
 
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
FISL18 - Open Data Science - Elaborando uma plataforma de Big Data & Analytic...
 
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
AEL - Adaptive Execution Layer on Spark Cluster with Pentaho Data Integration
 
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
O Potencial Competitivo da Ciencia de Dados e da Inteligencia Artificial nas ...
 
Metodologia Hacker de Ensino na Ambiente Livre
Metodologia Hacker de Ensino na Ambiente LivreMetodologia Hacker de Ensino na Ambiente Livre
Metodologia Hacker de Ensino na Ambiente Livre
 
Integrando o Drupal com o ECM Alfresco usando CMIS
Integrando o Drupal com o ECM Alfresco usando CMISIntegrando o Drupal com o ECM Alfresco usando CMIS
Integrando o Drupal com o ECM Alfresco usando CMIS
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
 
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
Open Source Data Science - Elaborando uma plataforma de Big Data & Analytics ...
 
TDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativosTDC2017 - Misturando dados com Pentaho para insights mais significativos
TDC2017 - Misturando dados com Pentaho para insights mais significativos
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
Pentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data LakesPentaho, Hadoop , Big Data e Data Lakes
Pentaho, Hadoop , Big Data e Data Lakes
 
Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre Cientista de Dados – Dominando o Big Data com Software Livre
Cientista de Dados – Dominando o Big Data com Software Livre
 
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com PentahoPostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
PostgreSQL em projetos de Business Analytics e Big Data Analytics com Pentaho
 
Pentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data LakesPentaho Hadoop Big Data e Data Lakes
Pentaho Hadoop Big Data e Data Lakes
 
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e PentahoBig Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
Big Data Analytics - Do MapReduce ao dashboard com Hadoop e Pentaho
 
SEBRAETEC - Inteligência Empresarial com CRM BI ECM e BPM
SEBRAETEC -  Inteligência Empresarial com CRM BI ECM e BPMSEBRAETEC -  Inteligência Empresarial com CRM BI ECM e BPM
SEBRAETEC - Inteligência Empresarial com CRM BI ECM e BPM
 
Carreira Profissional e Certificação de um Analista de BI Pentaho
Carreira Profissional e Certificação de um Analista de BI PentahoCarreira Profissional e Certificação de um Analista de BI Pentaho
Carreira Profissional e Certificação de um Analista de BI Pentaho
 
Suporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho ReportSuporte a Geo-Mapping no Pentaho Report
Suporte a Geo-Mapping no Pentaho Report
 

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