Sub importa_texto_nome() On Error GoTo erro Dim Pasta As String Dim Arquivo As String Dim linha As Double Dim registro As String Dim vetor() As String With Application.FileDialog(msoFileDialogFolderPicker) .InitialFileName = Application.DefaultFilePath & "\" .Title = "Selecione a pasta" .Show If .SelectedItems.Count = 0 Then Exit Sub Else Pasta = .SelectedItems(1) & "\" End If End With Range("A:AA").Clear Application.Cursor = xlWait Application.ScreenUpdating = False linha = 1 Arquivo = Dir(Pasta & Arquivo) Do While Arquivo <> "" Open Pasta & Arquivo For Input As #1 DoEvents Do Until EOF(1) DoEvents Line Input #1, registro vetor() = Split(registro, ";") 'Ajustar a quantidade de colunas de acordo com a necessidade Cells(linha, 1) = vetor(0) Cells(linha, 2) = vetor(1) If linha = 1 Then Cells(linha, 3) = "Arquivo" Else Cells(linha, 3) = Arquivo End If linha = linha + 1 Loop Close #1 Arquivo = Dir Loop erro: Application.ScreenUpdating = True Application.Cursor = xlDefault If Err.Number = 0 Then MsgBox "A importação dos arquivos de texto foi concluída." Else MsgBox Err.Description, vbCritical End If Exit Sub End Sub
Blog do Kazu - Dicas rápidas de Office
Eventualmente dicas sobre outros programas, Windows e hardware.
sábado, 15 de julho de 2023
Importação de arquivos csv em lote - Excel VBA
quarta-feira, 26 de abril de 2023
Outlook VBA - capturar o link de uma imagem no corpo do e-mail
Deixando registrado aqui o código de uma necessidade pontual.
;-)
Sub CapturarAtributoTag()
Dim objMail As Outlook.MailItem
Set objMail = Application.ActiveExplorer.
Dim objHTMLDoc As MSHTML.HTMLDocument
Set objHTMLDoc = New MSHTML.HTMLDocument
objHTMLDoc.body.innerHTML = objMail.HTMLBody
Dim objImg As MSHTML.HTMLImg
Set objImg = objHTMLDoc.
MsgBox objImg.getAttribute("src")
End Sub
sexta-feira, 3 de março de 2023
Capturar a assinatura do Outlook pelo VBA
Naõ tenho certeza se este código ainda funciona, mas vou deixar aqui para registro antes de apagar dos meus backups.
;-)
Option Explicit
Dim assinatura As Variant
Public Function pega_assinatura(ByVal sFile As String) As String
'Dick Kusleika
Dim FSO As Object
Dim ts As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ts = FSO.GetFile(sFile).OpenAsTextStream(1, -2)
pega_assinatura = ts.ReadAll
ts.Close
End Function
Sub Cria_mensagem_HTML()
'Creates a new e-mail item and modifies its properties.
Dim olApp As Outlook.Application
Dim objMail As MailItem
Set olApp = Outlook.Application
'Create mail item
Set objMail = olApp.CreateItem(olMailItem)
assinatura = pega_assinatura("C:\Documents and Settings\" & Environ("username") & "\AppData\Roaming\Microsoft\Assinaturas\Paulo.htm")
With objMail
'Set body format to HTML
'a tag <br/> quebra linha
'a tag <strong></strong> formata o texto para negrito
.BodyFormat = olFormatHTML
.HTMLBody = "<HTML><H2>The body of this message will appear in HTML.</H2><BODY>Type the " & _
"<strong>message</strong><br/>Nova Linha</BODY><br/></HTML>" & assinatura
.Display
End With
End Sub
quarta-feira, 8 de fevereiro de 2023
Dicas para não perder código VBA
Segue aí uma dica para evitar perda de códigos VBA, que pode ocorrer se o personal.xlsb corromper ou mesmo se der problema no próprio computador.
Um dia o meu personal.xlsb corrompeu e eu perdi vários códigos porque não conseguia acessá-los mais e também não foi possível recuperar o arquivo, desde então parti para duas soluções:
1 - fazer backup do personal.xlsb periodicamente;
2 - exportar os módulos um a um em arquivos separados. Isso facilita também quando quero levar os códigos para outro computador, bastando apenas importá-los dentro do VBA.
sexta-feira, 18 de novembro de 2022
Tabela de feriados nacionais até 2078 - formato xlsx.
Deixando registrado aqui para futuras consultas...
https://www.anbima.com.br/feriados/feriados.asp
;-)
quinta-feira, 26 de agosto de 2021
Criar documentos a partir do Excel
Olá!
Quando for criar um documento a partir do Excel (um contrato, nota promissória, recibos, etc.) utilize o recurso de automação do Office e aproveite as funcionalidades do Word que é o programa adequado para tratar textos.
Crie um documento modelo no Word e utilize indicadores (bookmarks) para inserir os textos no documento.
Imagine um contrato de várias páginas onde, no início existem campos que precisam ser preenchidos, na sequência constam as cláusulas e no final o nome dos envolvidos.
Dá para fazer no Excel? Dá, mas imagine como fazer o alinhamento das margens, controle do fluxo do texto nas páginas, caso alguns campos sejam variáveis em quantidade (uma lista de produtos por exemplo no meio do contrato), numeração de página, etc.
Aproveite o potencial de cada programa para fazer um trabalho adequado e com qualidade.
Abaixo um exemplo bem simples para ilustrar melhor o recurso.
Importante: não esqueça de marcar o Microsoft Word nas referências do VBA.
;-)
sábado, 14 de agosto de 2021
Cuidados ao trabalhar com arquivos csv
O formato csv (Comma Separated Values) são comumente utilizados como arquivos de troca entre sistemas e muitas vezes precisamos visualizar o conteúdo para fins de conferência.
Apesar do Windows atribuir o Excel como aplicativo padrão para abertura desses arquivos, é importante saber que o formato csv não é nativo do Excel, apesar deste permitir a abertura sem problema algum.
Ao abrir o arquivo, o Excel vai converter campos como por exemplo, números no formato texto para o formato numérico, vide exemplos abaixo.
O problema é quando o sistema destino "espera" um campo de números com zeros à esquerda.
Se o usuário abrir o arquivo no Excel e salvar, os zeros à esquerda dos números serão perdidos, portanto, recomendo fortemente que para conferir arquivos csv, sejam utilizados o bloco de notas ou algum outro editor de texto puro (notepad++, Kedit, TextPad dentre outros) ou habitue-se sempre a fechar o arquivo sem salvar.
;-)
sexta-feira, 2 de abril de 2021
Guia de atalhos e funções do Excel
sexta-feira, 26 de junho de 2020
Obtendo o valor financiado a partir da parcela
O valor financiado quase sempre terá uma diferença de centavos, devido as decimais que envolvem o cálculo.
A tabela price está considerando a contagem dias corridos, ou seja, varia de 30, 31, 28 ou 29 dias conforme o mês (lembrando que no cálculo com a HP12 o resultado será sempre diferente pois a mesma considera todos os meses com 30 dias).
No início da função estão as informações de como passar os parâmetros.
Testem antes de utilizar!
;-)
Public Function f_composicao(taxa As Double, _ qtd_parcelas As Integer, _ dt_inicio As String, _ dt_primeira_parcela As String, _ vlr_parcela) As Double 'Para passar os argumentos desta função: 'Informar valores no padrão americano (ponto no lugar de vírgula) 'Informar data entre aspas duplas (string) Exemplo: "31/07/2013" 'Informat a taxa em percentual. Exemplo 1,5% -> informar 0.015 Dim i As Integer Dim tx_ao_dia As Double Dim vlr_composicao As Double tx_ao_dia = Fix((((taxa + 1) ^ (1 / 30) - 1) * 100) * 1000000000) / 1000000000 vlr_composicao = 0 'Primeira parcela vlr_composicao = vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ ((CDate(dt_primeira_parcela) - CDate(dt_inicio)))) * 1000000000) / 1000000000) For i = 1 To qtd_parcelas - 1 vlr_composicao = vlr_composicao + vlr_parcela * (Fix(1 / ((tx_ao_dia / 100 + 1) ^ (DateAdd("M", i, CDate(dt_primeira_parcela)) - CDate(dt_inicio))) * 1000000000) / 1000000000) Next f_composicao = vlr_composicao Exit Function End Function
terça-feira, 14 de abril de 2020
Bons sites de Excel
https://analystcave.com/
https://exceljet.net/
;-)
domingo, 19 de janeiro de 2020
Tabela no Excel
Para converter um intervalo (ou range) em tabela, selecione-a e clique no menu Inserir e na faixa de opções, selecione "Tabela".
Nomes de colunas serão criados automaticamente caso não haja.
A partir daí, surgem as vantagens:
- Ao inserir uma soma no final de alguma coluna, novas opções serão exibidas pelo Excel: média, contagem, máx, mín, etc.;
- Ao rolar a tabela para cima, os cabeçalhos da tabela se fixam no cabeçalho de linhas;
- O autofiltro aparece automaticamente nos cabeçalhos;
- A área da tabela já recebe uma nova formatação que facilita a visualização;
- Fórmulas ficam mais fáceis de interpretar (vou abordar isso em outro post futuro);
- Muitas outras opções a mais.
Caso queira voltar a tabela para um intervalo comum, clicar em alguma célula da tabela, ir no meu Design e na faixa de opções, clicar em Converter em intervalo.
Nas primeiras vezes que se utiliza o recurso, pode parecer um pouco complicado, mas rapidamente você se acostuma e percebe que é um recurso muito útil, fácil de utilizar e que oferece muitas opções interessantes.
;-)
segunda-feira, 13 de janeiro de 2020
Substituindo o antigo arquivo *.bat
O uso era muito comum nas tarefas de automatização.
Hoje temos os scripts que podem executar uma gama de tarefas muito maior, como por exemplo, abrir um banco de dados Access e executar consultas e macros.
A sintaxe dos comandos é muito parecida com o VBA, quem já programa nessa linguagem, não terá dificuldades com os scripts.
Para criar um script, basta digitar o(s) comando(s) num bloco de notas e salvar com extensão *.vbs.
Para executar, é só dar um duplo clique ou acioná-lo pelo agendador de tarefas (o que é mais usual).
Vejam um exemplo bem simples de script para copiar arquivo:
Const OverwriteExisting = TRUE
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\FSO\ScriptLog.txt" , "D:\Archive\", OverwriteExisting
Indico abaixo 2 sites excelentes para aprender mais sobre os scripts:
http://www.macoratti.net/wsh_1.htm
https://www.juliobattisti.com.br/tutoriais/ricardosilva/wsh001.asp
;-)
domingo, 12 de janeiro de 2020
Dividindo uma amostra em partes iguais (ou o mais próximo disso)
Uma das formas práticas e rápidas para dividir a base é utilizar o random digit, utilizando para isso, o 6º e 7º dígito de uma raiz do cnpj com 9 dígitos para identificar o registro e depois classificá-los conforme a necessidade.
Segue abaixo o código para se obter os dígitos e depois basta separar o público.
Public Function fn_randomDG(cnpj As Double) As Integer Dim v_cnpj As String Dim d6 As String Dim d7 As String
v_cnpj = cnpj d6 = Mid(v_cnpj, 6, 1) d7 = Mid(v_cnpj, 7, 1) fn_randomDG = Val(d6 + d7) End Function
Neste exemplo, dividi uma base de 200 mil registros em 4 partes com random digit de
0 a 25, 26 a 50, 51 a 75 e 76 a 99.
Veja que o resultado são 4 bases de quantidades de registros bastante próximos:
50.920
49.972
49.739
49.364
A base usada para testes foi baixada no site da Receita Federal, são CNPJ's válidos e disponibilizados para qualquer pessoa fazer o download:
https://www.fazenda.pr.gov.br/modules/conteudo/conteudo.php?conteudo=109
Não vou entrar no detalhe do random digit pois é um assunto no qual não sou especialista, portanto, sem propriedade nenhuma para escrever aqui como foi desenvolvido e a aplicabilidade em outros tipos de análises.
Se você tiver interesse e paciência, procure no Google ou converse com algum estatístico (essa segunda opção, eu acho mais interessante...)
Até a próxima!
;-)
segunda-feira, 30 de dezembro de 2019
Principais teclas de atalho no ambiente do VBA
Quem me conhece, sabe que não sou muito fã do mouse e prefiro atalhos por proporcionar acesso direto a recursos, sem precisar clicar em vários itens até chegar onde se precisa.
Segue abaixo a lista dos atalhos que mais utilizo, experimentem.
;-)
CTRL+R = Exibir o Projetc Explorer
CTRL_G = Exibir a janela de verificação imediata
F2 = Exibir o pesquisador de objetos
F5 = Executar o código inteiro
F8 = Executar o código passo a passo
F9 = Ativar/desativar ponto de interrupção
CTRL+Shift+F9 = Desativar TODOS os pontos de interrupção
CTRL+Break=Pausar a execução do código
domingo, 22 de dezembro de 2019
Tabela dinâmica para iniciantes
Vocês aprenderão de forma fácil e rápida para que serve, quando e como utilizar uma tabela dinâmica que é um dos recursos mais versáteis do Excel para análise e apresentação de dados.
Segue o link, esse eu recomendo:
https://www.udemy.com/course/excel-analise-dados-tabela-dinamica-cristian-firmino/
;-)
domingo, 11 de novembro de 2018
Posicionando o cursor na tela com o VBA
sábado, 27 de outubro de 2018
Copiando texto de imagem
O OneNote que faz pate do pacote Office já tem esse recurso.
Conheço poucas pessoas que utilizam esse programa, mas para quem tiver curiosidade, eu recomendo, pois ele é muito útil para anotações diversas nas quais podem ser inseridos imagens, arquivos, textos, prints de telas, etc.
Um programa semelhante e muito útil que também recomendo, é o Keep do Google, vale a pena dar uma olhada para conhecer.
Bem, para extrair o texto pelo OneNote é bem simples:
Basta inserir a imagem em alguma anotação, clicar com o botão direito e selecionar "Extrair texto da imagem".
Obviamente, o texto não será 100% reconhecido, mas dependendo da imagem, o índice de acerto será muito bom.
;-)
domingo, 29 de julho de 2018
segunda-feira, 16 de julho de 2018
Programa para particionar discos
Funcionamento muito parecido com o famoso Partition Magic.
Para quem precisa só para tarefas básicas, resolve muito bem.
https://www.minitool.com/partition-manager/partition-wizard-home.html
No site do desenvolvedor, tem diversas outras ferramentas para recuperação de dados em várias mídias, vale a pena dar uma olhada.
;-)
segunda-feira, 25 de junho de 2018
Formatar rapidamente uma planilha
Nada complicado, basta ajustar a largura das colunas e algumas vezes, a altura da linha e tudo bem, mas como no meu caso é repetitivo, crei uma macro que faz isso rapidamente.
Ganho muito em produtividade e os destinatários das minhas planilhas também.
A macro em si é muito simples, mas fica a dica para ganhar tempo em pequenas tarefas recorrentes, que somados, representam um ganho significativo no fim do dia.
Sub AjustaColunas() ' ' Formata Macro ' ' Atalho do teclado: Ctrl+Shift+F ' Cells.Select Selection.RowHeight = 15 Cells.EntireColumn.AutoFit Range("A2").Select ActiveWindow.FreezePanes = True End Sub
Pesquisar este blog
Quem sou eu
- Kazu
- Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.