-
Posts
85 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
Tudo que TianK postou
-
Olá, Desconheço como se faz no Word, mas no LibreOffice você tem as opções: Inserir as tabelas menores dentro de uma tabela grande. Você cria uma tabela com 3 colunas e 4 linhas e, então, vai em cada célula e insere uma tabela menor. Inserir um quadro (moldura) indo em "Inserir > Quadro > Quadro..." (Libreoffice 5.1.5.2). Esse quadro aceita que você insira uma tabela dentro e confere a elas a capacidade de flutuar no texto. Então, você pode desenhar quantos quadros quiser e colocar as tabelas que precisar dentro, e então rearranjar na página. []s. TianK
-
Formatação condicional para calendario
TianK respondeu ao tópico de Valter Bastos em Microsoft Office e similares
Qual critério/fórmula você utilizou e que acabou gerando este resultado? Você poderia postar sua planilha aqui no tópico? Seria bem mais fácil conseguir ajuda. []s. TianK -
Boa noite, Desculpe, não ficou muito claro que você quer. Há nomes no intervalo D3:D43 e você quer impedir que sejam inseridos nomes repetidos no mesmo intervalo ou em outro? Msgbox? você quer uma macro? []s. TianK
-
Macro para copiar dados da pasta para planilha
TianK respondeu ao tópico de mdiego em Microsoft Office e similares
@mdiego , bom dia! Observei que as células mescladas deslocam os dados para colunas alternadas: uma com dado, outra sem. Por isso, as linhas abaixo precisam ser alteradas: As linhas que obtém a matriz de dados através do método getDataArray: mTurno1 = oArqPlan.getCellRangeByName( "D19:J26" ).getDataArray() mTurno2 = oArqPlan.getCellRangeByName( "D38:J45" ).getDataArray() As linhas que inserem os dados da matiz mTurno1 na planilha oPlan1.getCellByPosition( 0,ULin).Value = vData oPlan1.getCellByPosition( 1,ULin).Value = mTurno1(A)(0) oPlan1.getCellByPosition( 2,ULin).Value = mTurno1(A)(2) oPlan1.getCellByPosition( 3,ULin).Value = mTurno1(A)(4) oPlan1.getCellByPosition( 4,ULin).String = mTurno1(A)(6) As linhas que inserem os dados da matriz mTurno2 na planilha: oPlan1.getCellByPosition( 0,ULin).Value = vData oPlan1.getCellByPosition( 1,ULin).Value = mTurno2(A)(0) oPlan1.getCellByPosition( 2,ULin).Value = mTurno2(A)(2) oPlan1.getCellByPosition( 3,ULin).Value = mTurno2(A)(4) oPlan1.getCellByPosition( 4,ULin).String = mTurno2(A)(6) ... Estudo e empirismo. A API UNO é bem confusa de entender sem ler sobre ela. Até indiquei neste poste um livro em português que ajuda muito neste ponto. Mas, o grosso de informação eu extraio dos fóruns em inglês e do livro de Andrew Pitonyak (www.pitonyak.org). []s. TianK -
Macro para copiar dados da pasta para planilha
TianK respondeu ao tópico de mdiego em Microsoft Office e similares
@mdiego , boa noite! Primeiramente desculpe a demora para responder, mas semana passada realmente o serviço apertou. Pelo que entendi da estrutura dos seus relatórios e da planilha de "consolidação", cheguei a esta macro (anexo abaixo). Por favor, veja se lhe atende e dê um retorno. Código que faz a importação dos relatórios: Sub ImportarRelatorios ' Informe o número do mês e ' o caminho completo para os relatórios sMes = "06" ' <<< Nº do Mês sCaminho = "C:\Users\diego\Desktop\Maquina\CLP" '<<< Caminho completo ' Carregar a Planilha1 oDoc = ThisComponent oPlan1 = oDoc.Sheets.getByName( "Planilha1" ) ' Definir as propriedades para abrir o relatório Dim PropArq(0) As New com.sun.star.beans.PropertyValue PropArq(0).Name = "Hidden" PropArq(0).Value = True ' Iniciar a barra de status BarraStatus = oDoc.CurrentController.StatusIndicator BarraStatus.reset ' Loop pelos relatórios do mês For J = 1 To 31 sNomeRel = Right("0"&J,2) & " " & Right("0"&sMes,2) & " 2016.ods" sUrlRelatorio = convertToURL( sCaminho & "\" & sNomeRel ) ' Verificar se o relatório existe If FileExists( sUrlRelatorio ) Then ' Barra de Status: Indicar qual relatório será processado BarraStatus.start( "Importando... [ " & sNomeRel & " ]",10) ' Abrir o relatório de forma oculta oArq = StarDesktop.loadComponentFromURL( sUrlRelatorio,"_blank",0,PropArq() ) ' Barra de Status: Indicar o progresso BarraStatus.setValue(10) ' Obter os dados do relatório oArqPlan = oArq.Sheets.getByName( "Planilha1" ) vData = oArqPlan.getCellRangeByName( "B1" ).Value mTurno1 = oArqPlan.getCellRangeByName( "A12:D22" ).getDataArray() mTurno2 = oArqPlan.getCellRangeByName( "A32:D42" ).getDataArray() ' Fechar o relatório oArq.Close( -1 ) ' Preencher a planilha BDDADOSMES ULin = ULinha( oPlan1 ) A = 0 Do oPlan1.getCellByPosition( 0,ULin).Value = vData oPlan1.getCellByPosition( 1,ULin).Value = mTurno1(A)(0) oPlan1.getCellByPosition( 2,ULin).Value = mTurno1(A)(1) oPlan1.getCellByPosition( 3,ULin).Value = mTurno1(A)(2) oPlan1.getCellByPosition( 4,ULin).String = mTurno1(A)(3) ULin = ULin+1 A = A + 1 Loop Until mTurno1(A)(3) = "" ULin = ULinha( oPlan1 ) A = 0 Do oPlan1.getCellByPosition( 0,ULin).Value = vData oPlan1.getCellByPosition( 1,ULin).Value = mTurno2(A)(0) oPlan1.getCellByPosition( 2,ULin).Value = mTurno2(A)(1) oPlan1.getCellByPosition( 3,ULin).Value = mTurno2(A)(2) oPlan1.getCellByPosition( 4,ULin).String = mTurno2(A)(3) ULin = ULin+1 A = A + 1 Loop Until mTurno2(A)(3) = "" End If Next ' Restaurar a barra de status BarraStatus.End MsgBox "Concluído!" End Sub ' Função para identificar a última linha preenchida ' da Planilha Function ULinha(oPlanilha as Object) as Integer ' Carregar biblioteca de apoio "Tools" ' do LibreOffice GlobalScope.BasicLibraries.LoadLibrary("Tools") ULinha = GetLastUsedRow(oPlanilha) + 1 End Function []s. TianK BDDADOSMES (MACRO).ods.zip -
Macro para copiar dados da pasta para planilha
TianK respondeu ao tópico de mdiego em Microsoft Office e similares
@mdiego , É possível sim criar a macro que imagina. Mas para ajudá-lo, é preciso que você disponibilize duas planilhas de exemplo: uma dos relatórios que serão salvos ao longo do mês, e outra que receberá os dados. []s. TianK -
@1234fd, a dica de @Willer Reis não funcionou para você? É o método mais direto para a planilha eletrônica entender que você não quer inserir um número ou uma fórmula, mas sim um texto. Qual é a versão do seu LibreOffice?
-
Célula ativa no ooo basic.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
Bom dia, No caso, o comum é usar o método CurrentSelection juntamente com um teste para verificar se a seleção é uma célula individual: Sub Main oDoc = ThisComponent oCel = oDoc.CurrentSelection If oCel.ImplementationName <> "ScCellObj" Then MsgBox "Por favor, selecione uma única célula." Exit Sub End If vCel = oCel.Value sCel = oCel.String MsgBox "Valor: " & vCel & Chr(10) & "Texto: " & sCel End Sub Em todo caso, se precisar realmente de um comportamento mais parecido ao do ActiveCell do VBA, então pode usar a função abaixo em seu código: Function getActiveCell() Dim as1(), lSheet&,lCol&,lRow$, sDum as String,bErr as Boolean oView = ThisComponent.CurrentController as1() = Split(oView.ViewData, ";") lSheet = CLng(as1(1)) sDum = as1(lSheet +3) as1() = Split(sDum, "/") on error goto errSlash lCol = CLng(as1(0)) lRow = CLng(as1(1)) on error goto 0 getActiveCell = oView.Model.getSheets.getByIndex(lSheet).getcellByPosition(lCol,lRow) exit Function errSlash: if NOT(bErr) then bErr = True as1() = Split(sDum, "+") resume endif End Function Um exemplo de como usar a função acima: Sub Main2 oCel = getActiveCell vCel = oCel.Value sCel = oCel.String MsgBox "Valor: " & vCel & Chr(10) & "Texto: " & sCel End Sub []s. TianK -
Sinais e comandos como texto.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
Boa tarde, Substitua a linha: Formula = "=$Nomes.A" & n+2 & "&/"/ - "/&/" & "$Nomes.B" & n+2 por: Formula = "=$Nomes.A" & n+2 & " & "" - "" & " & "$Nomes.B" & n+2 No LibreOffice Basic quando você quer inserir as aspas (") dentro de uma string é preciso colocá-las em pares (""). []s. TianK -
Planilha para apenas permitir escrever os setores validos.
TianK respondeu ao tópico de Diego Rosdaibida em Microsoft Office e similares
Boa tarde, Você precisa usar a Validação de Dados (Dados > Validação). No link tem um passo a passo para uma situação bastante similar a sua: Como criar listas (combobox) no calc Outro link que pode te ajudar: http://camilaoliveira.net/blog/2015/02/02/libreoffice-validacao/ []s. TianK -
Formataçao condicional no calc
TianK respondeu ao tópico de Rodrigo S em Microsoft Office e similares
Boa tarde, Por esse trecho, meu palpite é um problema com o procedimento copiar/colar. O indicado é usar o "Colar Especial" para inserir os dados em um rol de células com formatação condicional. Caso contrário a formatação, que vem com as linhas coladas, irá se sobrepor a da formatação condicional. Você pode ir em Editar -> Colar Especial... ou combinar ctrl+shift+v. Então, desmarque a caixa "Formatos". Se este não for o seu problema, poste uma planilha de exemplo, com alguns dados e com a formatação condicional. []s. TianK -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
@daniellopes2006 , é um prazer ajudar, então a mim você não deve nada... talvez "deva" ao fórum a sinalização de que o tópico foi resolvido. @k_dantas , Abaixo segue a planilha com o código alterado. Veja se é isso que procura. Tabela de Atualização Monetária v2macro.ods -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
Façamos o seguinte: você disponibiliza um arquivo de exemplo, com dados com a formatação e o resultado desejado, como fizeram os outros, e eu vejo o que pode ser feito quanto a adaptar o código. Alterar a cor de fundo da célula selecionada para amarelo é tranquilo, agora "voltar a cor normal" dependerá de como você está pensando em formatar as células. A linguagem que estamos usando neste tópico é chamada LibreOffice Basic ou OpenOffice Basic (Se estiver usando o Apache OpenOffice). Ela é derivada da linguagem Basic, preservando desta as principais características: tipos de dados, sintaxe, funções internas, operadores, comandos, etc. Mas é possível programar macros com outras linguagens: Python, JavaScript, Java e BeanShell. Quanto a outra questão, desconheço outro método de se alterar o fundo da célula selecionada. Esse erro diz que o LibreOffice tentou chamar a macro "Main", mas a mesma não existe no módulo "Module1" na biblioteca "Standard". Para contornar o erro é preciso que você refaça os passos que indiquei na minha primeira resposta, certificando-se de seguir a ordem: (a) colar o código no módulo (após criá-lo) e (b) atribuir o evento de planilha "Seleção alterada" a macro "MudarFundo". []s. TianK -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
@LENIO , Segue a planilha com alterações no código. Obs.: Código alterado e testado no LibreOffice 5.1.2.2. []s. TianK PLANILHA-v2.ods -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
@LENIO, Não recebi sua planilha. Talvez fosse mais interessante você alterar os dados, editar sua postagem e inserir o arquivo. Assim mais pessoas poderiam dar uma olhada. []s. TianK -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
@daniellopes2006, Se o arquivo é novo, é preciso criar um módulo dentro da biblioteca padrão (standard) do mesmo para receber o código: No menu "Ferramentas" vá em "Macros" > "Organizador de Macros" > "LibreOffice Basic..." No Diálogo que surgir, selecione o nome do arquivo em "Macro de" e depois o botão "Novo" Será sugerido "Module1". Renomeei ou deixe como está. Será aberta a IDE do LibreOffice Basic. Especificamente para o que você quer, é necessário atribuir o código ao evento "Seleção alterada" da planilha: Aba da Planilha > "Eventos de Planilha..." > Evento "Seleção Alterada" > Botão "Macro" Em Biblioteca navegue até o "Module1" do arquivo e selecione a macro. Sempre que uma nova célula for alterada, o Calc disparará a rotina. Minha sugestão de código: ' Variáveis globais Global gCol, gLin Sub MudarFundo( oEv ) ' Atribuir ao Evento de Planilha: Seleção alterada On Error GoTo SairErro If Not isEmpty(gCol) Then Call LimparFundoSelecaoAntiga End If oCol = oEv.Columns.getByIndex(0) oLin = oEv.Rows.getByIndex(0) oCol.CellBackColor = RGB( 255,255,0 ) oLin.CellBackColor = RGB( 255,255,0 ) gCol = oCol gLin = oLin SairErro: End Sub Sub LimparFundoSelecaoAntiga gCol.setPropertyToDefault("CellBackColor") gLin.setPropertyToDefault("CellBackColor") End Sub []s. TianK Exemplo_com_macro.ods -
Libreoffice calc não imprime linhas da tabela
TianK respondeu ao tópico de Viniciuspra em Microsoft Office e similares
Boa noite, A versão 3.5.x.y é muito obsoleta. Além disso, se me recordo bem nela existia um bug relacionado a espessura das linhas de bordas no Calc. você aumenta a espessura e nada... No seu lugar, eu verificaria a possibilidade de atualizar o LibreOffice para a versão 5.0.5 (atual e estável). []s TianK -
Libreoffice calc - alterar cor da linha coluna da célula ativa.
TianK respondeu ao tópico de daniellopes2006 em Microsoft Office e similares
Boa noite, Para facilitar, você poderia disponibilizar uma planilha (aquivo .ods) com dados de exemplo e o resultado esperado. []s TianK -
Limpar células desprotegidas
TianK respondeu ao tópico de MariPacheco em Microsoft Office e similares
Mari, boa tarde Se eu entendi corretamente, você deseja apagar o conteúdo das células desprotegidas. Então, uma macro construída usando a API Basic do LibreOffice ficaria assim: Sub Limpar ' Primeira planilha no momento (mais a esquerda) oPlan = ThisComponent.Sheets.getByIndex( 0 ) ' Intervalo oI = oPlan.getCellRangeByName( "C44:D45" ) ' Endereço/limites do intervalo oE = oI.getRangeAddress ' Loop nas células do Intervalo For nL = oE.StartRow to oE.EndRow For nC = oE.StartColumn To oE.EndColumn oC = oPlan.getCellByPosition( nC,nL ) ' Verifica se a célula está desprotegida If NOT oC.CellProtection.IsLocked Then ' 5 apaga conteúdo valor e texto da célula oC.ClearContents( 5 ) End If Next Next End Sub Abrs. Tiank -
Macro para ser executada apenas 1 vez
TianK respondeu ao tópico de Lucas_Gomes_Moreira em Microsoft Office e similares
Bom dia, Pensei numa solução um pouquinho diferente da de @g.schiavinatto. A macro será executada apenas se determinado valor estiver na célula (no caso o valor 1). Assim, se a célula estiver vazia ou com outro valor, a macro não rodará. Então, você deverá modificar sua macro para ter a seguinte estrutura: Sub Macro_Executar_AoAbrir() ' Começar com um teste para ver se a macro ' já foi executada. A função "Ja_Executou" ' se encarrega de fazer a verificação. ' Ao retornar "True" a macro é encerrada aqui If Ja_Executou Then Exit Sub ' Seu código normal ' Chamar a rotina que marcará a macro como ' excecutada, ou melhor, apagará o valor ' da célula A1048576 Call Marcar_como_Executada End Sub A seguir estão a função "Ja_Executou" e a rotina "Marcar_como_Executada": Function Ja_Executou As Boolean ' Planilha que está no momento na primeira posição oPlan = ThisComponent.Sheets.getByIndex( 0 ) ' Última célula da coluna A: A1048576 oCel = oPlan.getCellByPosition( 0,1048575 ) ' Se o valor de A1048576 for zero a macro já foi executada If oCel.Value = 0 Then Ja_Executou = 1 Else Ja_Executou = 0 End If End Function Sub Marcar_como_Executada ' Planilha que está no momento na primeira posição oPlan = ThisComponent.Sheets.getByIndex( 0 ) ' Última célula da coluna A: A1048576 oCel = oPlan.getCellByPosition( 0,1048575 ) ' Apagar os valores de A1048576 oCel.ClearContents( 1 ) End Sub E para não ter que colocar o valor 1 na célula A1048576 manualmente, rode a macro: Sub Definir_Executar ' Planilha que está no momento na primeira posição oPlan = ThisComponent.Sheets.getByIndex( 0 ) ' Última célula da coluna A: A1048576 oCel = oPlan.getCellByPosition( 0,1048575 ) oCel.Value = 1 End Sub []s. TianK -
Salvar PPT em MHTML sem perder Macros
TianK respondeu ao tópico de CIDA CURTOLO em Microsoft Office e similares
Olá, Não estou muito familiarizado com a API (VBA) do PowerPoint, por isso não entendi o que seu código faz. Você poderia dar mais detalhes? Outra coisa, BrOffice é mega desatualizado. O indicado é usar o seu sucessor LibreOffice ou até mesmo o OpenOffice da Apache. []s. TianK. -
Bom dia, O que exatamente você deseja? É possível dar mais detalhes? Pela sua descrição inicial imaginei que a mala direta atenderia muito bem. []s. TianK
-
@f.bernardino, bom dia! Você pode inserir campos no Writer a partir da planilha do Calc, através do menu Inserir > Campos > Outros... Neste link existe uma explicação mais detalhada com imagens. []s TianK
-
Macro Para FIXAR DATA no OpenOFFICE CALC
TianK respondeu ao tópico de Ely_ems em Microsoft Office e similares
@Ely_ems, boa tarde! Sua dúvida está aqui já um tempinho, então não sei se você encontrou alguma resposta. Mas, vou deixar aqui uma solução que cheguei, para quem estiver precisando. Primeiramente reescrevi a macro usando a API UNO do LibreOffice/OpenOffice: REM ***** BASIC *****Sub Planilha1_Conteudo_Alterado( oCelAlterada )' Evento de Planilha: Conteúdo alteradoDim oPlan as ObjectDim Lin as Long, Col as Long ' Sair se a alteração detectada não for em uma célula individual If oCelAlterada.ImplementationName <> "ScCellObj" Then Exit Sub Lin = oCelAlterada.CellAddress.Row Col = oCelAlterada.CellAddress.Column oPlan = oCelAlterada.getSpreadsheet If Col = 0 And Lin > 0 Then If oCelAlterada.String <> "" Then oPlan.getCellByPosition( 1,Lin ).String = Format( Now(), "DD/MM/YYYY" ) End If End IfEnd Sub Em seguida, clicando com o botão direito do mouse sobre a aba da planilha, acessei "Eventos de planilha...". Atribui a macro que estava em "Module1" ao Evento "Conteúdo alterado". Em meus testes no LibreOffice 4.4.4.3, tudo funcionou como o desejado. []s. TianK OOF-DataFixada-V2.ods.rar -
Contagem de células coloridas - Calc
TianK respondeu ao tópico de Jessica Carvalho_522319 em Microsoft Office e similares
@Jessica Carvalho_522319, Uma fórmula pronta para isso acredito não exista. A solução para o caso seria apenas através de macro. Mas você pode usar a estratégia de criar uma coluna de controle, paralela a coluna que contém as células de cor, e atribuir um letra manualmente, por exemplo, para cada uma. Então você usa a função SOMASE() para somar por letra. Uma vez depois de somada, você oculta a a coluna controle, se preferir. []s TianK
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais