segunda-feira, 7 de março de 2011

Zipando via VBA com o 7Zip

Segue uma adaptação de um código que eu peguei na internet.
Não é de minha autoria, mas vou deixar aqui para futuras consultas.
É bom ressaltar que o 7Zip é um compactador free e até o último comparativo que fiz, tinha uma taxa de compressão melhor que a do WinRAR.


Option Explicit

Dim nome_zip As Variant
Dim pasta_a_zipar As Variant
Dim strDate As String
Dim Pasta_destino As String
Dim oApp As Object


Sub Zipar_tudo_com_7Zip()

'Pasta onde estará o arquivo zipado
Pasta_destino = "C:\Users\todorok\Desktop\"

'Pasta que contém os arquivos a serem zipados
pasta_a_zipar = "C:\Users\todorok\Desktop\Kaizen\"

'Arquivo zip que contém os arquivos compactados
nome_zip = Pasta_destino & "backup" & ".zip"

'Criar um arquivo zip vazio
Call Novo_zip_vazio(nome_zip)

Set oApp = CreateObject("Shell.Application")
'Copiar os arquivos para dentro do arquivo zip vazio
oApp.NameSpace(nome_zip).CopyHere oApp.NameSpace(pasta_a_zipar).Items

'Aguardar o término da compactação
On Error Resume Next
Do Until oApp.NameSpace(nome_zip).Items.Count = oApp.NameSpace(pasta_a_zipar).Items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0

MsgBox "Fim!"
End Sub

Sub Novo_zip_vazio(sPath)
'Se já existir um arquivo zip, apagá-lo e criar um novo
If Len(Dir(sPath)) > 0 Then Kill sPath
Open sPath For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
End Sub

domingo, 23 de janeiro de 2011

Linguagem de programação dirigida a iniciantes

Chegou o Small Basic, uma linguagem de programação que, segundo a Microsoft, destina-se a crianças ou pessoas que desejam aprender a programar de forma simples e intuitiva.
Ainda não instalei, mas logo farei um teste.
Para pessoas que já têm alguma experiência, em princípio não vejo muita coisa interessante, mas o que me chamou a atenção é que o Small Basic é orientado à objetos e imagino eu que, pela sua simplicidade, deve ajudar a quem vive no mundo da orientação à eventos, aprender os novos conceitos.

Links:
Download do Small Basic:
http://blogs.msdn.com/b/smallbasic/archive/2010/06/11/small-basic-v0-9-is-here.aspx

FAQ:
http://msdn.microsoft.com/en-us/beginner/ff384239.aspx

Manuais:
http://msdn.microsoft.com/en-us/ff423682
Obs.: infelizmente o português BR não estava disponível no momento em que escrevia este post, mas o link para o português PT está ativo.

Home do Small Basic:
http://msdn.microsoft.com/en-us/beginner/ff384126.aspx

;-)

Verificando a versão do Excel via VBA

Esta questão foi postada num dos grupos de discussões que participo.
A resposta é bem simples, basta usar o Application.Version que será mostrada a versão do Excel que está sendo executada.
Abra o VBA (ALT + F11), tecle CTRL + G para abrir a janela de verificação imediata e digite Debug.Print Application.Version

O resultado será:
Versão 8 para o Excel 97
Versão 9 para o Excel 2000
Versão 10 para o Excel 2002
Versão 11 para o Excel 2003
Versão 12 para o Excel 2007
Versão 14 para o Excel 2010

A pergunta mais óbvia: cadê a versão 13?
Se alguém souber, me mande por e-mail, apenas por curiosidade.
Certamente, a necessidade de verificar a versão deve-se a alguma incompatibilidade de comandos entre a versão onde foi desenvolvido e a versão onde será executado o programa.
Nestes casos, minha recomendação também é simples:
Se você sabe que tem mais de uma versão do Excel instalado na sua empresa, desenvolva sempre para a versão mais antiga e use sempre que possível, late binding para evitar problemas com referências aos outros aplicativos do MS Office.
A pequena perda de performance no late binding é praticamente imperceptível, visto que os PC's atuais são bem rápidos e raramente aplicações desenvolvidas no Excel têm a performance como foco principal.


;-)

domingo, 19 de dezembro de 2010

Mais uma opção ao Microsoft Office

Tirando o BrOffice, acho que a falta de sucesso de outras suítes vem justamente de seus maiores objetivos: tentarem se parecer com o Microsoft Office.
Talvez algum desenvolvedor ainda tenha uma super idéia, faça algo realmente diferente e quem sabe, chame mais a atenção dos usuários em geral.

Link para quem quiser experimentar:
http://product.thinkfree.com/office

A propósito, +/- U$ 50.

;-)

quinta-feira, 9 de dezembro de 2010

Uma "outra" opção em suíte Office livre - LIBRE OFFICE

Outra entre aspas porque me parece ser o BrOffice, "largado" pela Sun e continuado pelos fundadores do antigo projeto.
Ainda não testei, fica para outra ocasião e depois eu coloco aqui as impressões.
No time que toca o projeto, um brazuca, Claudio Filho que dentre outras coisas, co-fundou a comunidade BROffice.org.

Link:
http://www.documentfoundation.org/

;-)

segunda-feira, 6 de dezembro de 2010

Conectando o Excel 2007 via ADO


Sub ado_2007()
Dim cnn As New ADODB.Connection

cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\teste_ado.xlsx;" & _
"Extended Properties=" & Chr(34) & "Excel 12.0;HDR=Yes" & Chr(34)

cnn.Open
cnn.Close
End Sub

sábado, 13 de novembro de 2010

Separar planilhas

Esta é uma tarefa que sempre aparece nos grupos de discussão: dividir uma planilha a partir de um campo como critério.
Por exemplo, a partir de planilha de vendas onde estão os dados de todos os vendedores, criar uma nova planilha para cada vendedor.
Muitas soluções criativas já foram propostas e eu vou deixar a minha aqui.
Fiz em Access pela facilidades que o aplicativo oferece.

Baixem o aplicativo no link, na pasta "Exemplos Excel" (apesar de ser em Access...).
O código está aberto para quem quiser melhorar ou personalizar, basta abrir segurando a tecla shift.

http://www.4shared.com/dir/jufLzdx2/Compartilhado.html

;-)

domingo, 7 de novembro de 2010

MariaDB

Um nome incomum e curioso, mas acreditem, é um banco de dados.
Criado pelos desenvolvedores do MySQL que não se deram bem com a Sun Microsystems, parece ser algo promissor, exatamente na contramão do MySQL, que neste momento aparenta estar com o futuro obscuro e incerto.

http://www.maria.org

;-)

quinta-feira, 4 de novembro de 2010

Verificando o tamanho das pastas e listando no Excel


Option Explicit

Dim objFSO As Object

Dim pasta As Object

Dim subpasta As Object

Dim linha As Integer

Dim diretorio As String

Dim UserFile As String

Private Sub cmd_verifica_Click()

UserFile = GetDirectory("Selecione a pasta")

If UserFile = "" Then

Exit Sub

Else

Me.MousePointer = fmMousePointerHourGlass

Call subpastas(UserFile)

Me.MousePointer = fmMousePointerDefault

Unload Me

End If

End Sub

Sub subpastas(diretorio As String)

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set pasta = objFSO.GetFolder(diretorio)

Set subpasta = pasta.SubFolders

ActiveSheet.Range("A1").CurrentRegion.Clear

linha = 2

ActiveSheet.Cells(1, 1) = "Nome da pasta"

ActiveSheet.Cells(1, 2) = "Tamanho"

For Each pasta In subpasta

DoEvents

ActiveSheet.Cells(linha, 1) = Mid(diretorio, 3, 99) & "\" & pasta.Name

ActiveSheet.Cells(linha, 2) = pasta.Size

linha = linha + 1

Next

ActiveSheet.Columns("A:B").AutoFit

ActiveSheet.Range("B:B").NumberFormat = "#,##0"

Call classifica

ActiveSheet.Cells(1, 1).Select

End Sub

Sub classifica()

Columns("A:B").Select

ActiveSheet.Sort.SortFields.Clear

ActiveSheet.Sort.SortFields.Add Key:=Range("B2:B100"), _

SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With ActiveSheet.Sort

.SetRange Range("A1:B100")

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

End Sub


domingo, 31 de outubro de 2010

Preço de software


Sempre fui um crítico dos preços de software no Brasil.
Continuo achando caríssimo um Windows ou um Office com Access para pessoa física.
Se o Windows é o sistema operacional mais vendido no mundo inteiro, por que é o mais caro?
Vejam na imagem por exemplo, a versão de desenvolvedor do SQL Server, um super banco de dados corporativo. Coloquei a imagem para que ninguém pense que eu errei na digitação...
Lembro-me quando eu comprei o Windows 95 Update (para atualizar a partir do Win 3.11) e paguei algo em torno do que seria hoje uns R$ 70,00.
Isso sim era um preço justo, ainda mais considerando que naquela época, os PC's eram extremamente caros e com preços em dólar!
Será que o Windows e Office precisam ser tão caros assim?

;-)



domingo, 10 de outubro de 2010

Contrato de desenvolvimento de software

Esta é uma dúvida frequente na comunidade, principalmente para quem está começando ou está deixando de desenvolver para a empresa onde trabalha ou ainda está fazendo um "extra" paralelamente ao seu emprego.
Seguem links interessantes, onde o colega Avelino Sampaio do fórum ExpertAccess nos indica links muito interessantes, vale a pena dar uma olhada:




;-)

terça-feira, 5 de outubro de 2010

Utilitários para o Excel


Título estranho, mas é isso mesmo: utilitários para o Excel.
Várias ferramentas para quem não quer ser aventurar em macros/VBA e precisa de coisas simples do tipo "clica no botão e pronto".
Obviamente precisa pagar, mas os preços não são tão altos.
O que eu achei mais interessante pela descrição é o Excel Tool SQL Query por U$ 28.
Vale a pena dar uma olhada, apenas a título de curiosidade.

http://www.excel-tool.com/

;-)

sexta-feira, 1 de outubro de 2010

O que há de novo no Excel 2010

Sinceramente ainda não vi nada que merecesse algum comentário mais detalhado, exemplos ou demonstrações.
O Office 2010 acrescentou vários recursos que, apesar de interessantes, vão atender apenas a minoria dos usuários.
Continuo com a opinião de que, para grande parte das pessoas, o Excel 97 ainda é mais que suficiente. A migração para versões mais recentes ocorreram por uma questão de compatibilidade de arquivos ou por curiosidade pela novidade.
Eu mesmo sou usuário do Office 2007 no trabalho e em casa uso o 2003.
Para contornar a questão da compatibilidade, instalei o suplemento oferecido pela Microsoft no seu site de downloads.

Enfim, futuramente devo comentar alguma coisa sobre o Excel 2010.
O único comentário direto é o preço: em torno dos R$ 1.500,00 (versão Professional, outubro/2010), ainda é extremamente caro para o usuário doméstico.


Conectando o Access 2007 via VBA

Vou deixar um código aqui que postei em outro fórum, onde um colega queria saber como conectar o ADO numa base Access 2007.
Basta trocar o Provider, que até o 2003 era o Jet.

;-)

Option Compare Database
Option Explicit
Dim rst As ADODB.Recordset
Dim cnn As ADODB.Connection

Sub teste()
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\banco.accdb"

rst.Open "Select * FROM TABELA1", cnn, adOpenKeyset, adLockOptimistic

MsgBox rst(0)

rst.Close
cnn.Close
End Sub


domingo, 25 de julho de 2010

"Fernando (Alonso) é mais rápido que você, confirme que você entendeu a mensagem!

Mensagem do engenheiro de Felipe Massa, Rob Smedley, no GP da Alemanha neste domingo, 25/07/2010.

O Massa entendeu, nós entendemos, o mundo inteiro entendeu.

Infelizmente.


sábado, 10 de julho de 2010

Blog de vagas e oportunidades

Blog do grande amigo Gian Carlos, sempre disposto a ajudar as pessoas.
Recomendo!


;-)

sexta-feira, 9 de julho de 2010

Criar email via VBA no Outlook - late binding

Mais óbvio e simples impossível.
Não esquecer:
- Que na hora do "Send", o Outlook vai dar um aviso de que outro programa está tentando enviar mensagens;
- O Outlook deve estar aberto na hora da execução do código.


;-)



Sub email()

Set olapp = CreateObject("Outlook.Application")
olapp.Session.Logon

Set mensagem = olapp.CreateItem(0)
With mensagem
.To = ""
.CC = ""
.BCC = ""
.Subject = ""
.Body = ""
.display
.Send
End With

End Sub

segunda-feira, 14 de junho de 2010

Sobre o limite de 2Gb no Access

Muita gente se apavora quando o seu mdb chega perto dos 2Gb e logo vai pensando em migrar para outro banco de dados.
Meu recado para os colegas:
O limite de 2Gb é para 1(um) mdb. Nada impede que se coloque tabelas em outros mdb's e se trabalhe com as mesmas vinculadas.
Utilizando-se esse recurso do Access, o limite praticamente deixa de existir, pois basta distribuir as tabelas de forma que cada mdb fique dentro dos 2Gb.
Importante lembrar que os 2Gb são para os dados e os objetos de sistema.
Na prática, o que se tem de espaço para dados são 2Gb menos os objetos de sistema.
Recomendo nunca ultrapassar 1,5Gb de mdb. Pode parecer conservador demais, mas já tive mdb's que quando chegaram a 1,9Gb começaram a dar problemas, desde então, passei a trabalhar tranquilamente dentro dos 1,5Gb.
Ainda penso que SQL Server Express + Access é uma dupla imbatível para desenvolver aplicações com bancos de dados.
O Access é uma ferramenta de desenvolvimento praticamente completa, só faltava gerar executáveis. Além disso, não tem outro aplicativo no mercado com um gerador de relatórios tão completo como o do Access.
VBA então nem se fala, muito fácil de usar.
Front End feito no Access e banco de dados no já sabidamente estável, confiável e robusto SQL Server atendem muito bem as aplicações corriqueiras de pequeno/médio porte.

;-)

p.s. Nem pensem em fazer banco de dados em Excel, ele não foi criado para essa finalidade!!!

Office 2010

Creio que até o momento desta postagem, o Office 2010 ainda não foi lançado aqui no Brasil, mas dando uma olhada geral pela internet, notei que o botão "Office" (aquele redondo no canto superior esquerdo da tela do Office 2007) ... sumiu!
No lugar dele, agora temos de volta o item de menu "Arquivo" ou "File".
Após o lançamento oficial, eu volto a comentar sobre o assunto, pois pelo que sei, as versões que estão por aí, são beta's e portanto passíveis de mudanças.
Você já devem ter visto um comentário que postei aqui no blog, falando sobre a complicação que é a nova "faixa de opções", que até agora não vejo lógica nenhuma no agrupamento de comandos.
Quem sabe o "sumiço" do botão Office não seja uma volta às origens, afinal o que há de mal em voltar atrás numa idéia infeliz???

;-))))

Comentários no código VBA

Comentar o código é sempre uma boa prática para auxiliar em futuras manutenções, sejam elas feitas por você mesmo ou por terceiros.
O usual é usar um apóstrofe antes da linha do comentário, mas relembrando do bom e velho Visual Basic do meu TK 83, vi que o comando REM ("remarks") funciona também!
Único porém é que ele só serve quando está no início da linha (o apóstrofe funciona em comnetários na mesma linha após o código).
Exemplo:

'Este é um comentário
REM segunda linha do comentário

;-)

Pesquisar este blog

Arquivo do blog

Quem sou eu

Minha foto
Administrador de Empresas/Técnico em Processamento de Dados. Microsoft Office User Specialist - Excel Proficient. Pós-graduado em Business Intelligence.