VBA Copiar colar arquivos diferentes
Vocês votaram na enquete aqui do site excel e vba e em segundo lugar ficou o assunto VBA Copiar colar arquivos diferentes.
A maneira que demonstro é uma mais avançada e também com menos código.
Porém se você não gostar ou achar complicado aqui mesmo no site há outras maneiras (passo1 e passo2)que envolvem copiar célula por célula com um loop.
Você que escolhe a melhor maneira para trabalhar excel com vba.
1 – Vamos ao codigo VBA Copiar Colar arquivos diferentes:
________________________________________________________
Sub COPIAR_COLAR_ARQUIVO_DIFERENTES() 'Declarações Dim appExcel As Excel.Application Dim wb As Excel.Workbook 'A Aplicação Excel é criada aqui: Set appExcel = CreateObject("Excel.Application") 'A linha abaixo é importante: eu estou dizendo que todo o processo seja invisível. 'Talvez para testes seja importante deixar como True e assim acompanhar o processo appExcel.Visible = False 'Note que, na linha abaixo, foi adicionado um Workbook (um plan) 'E esse workboook fica nomeado como "wb" Set wb = appExcel.Workbooks.Add 'Agora para simplificar o processo, também vou gravar o nome da planilha origem Set oldPlan = Workbooks("planilha_antiga.xlsm").Worksheets("Plan1") 'Então copio todos os dados da tabela oldPlan.Range("A2").CurrentRegion.Copy 'Na linha abaixo eu colo os dados na nova planilha (lembre-se do "wb") wb.Worksheets("Plan1").Range("A1").PasteSpecial xlPasteValues 'Nas linhas abaixo eu salvo a planilha no mesmo diretorio que a planilha antiga diretorio = ThisWorkbook.Path & "\" nome = "exemplo.xls" appExcel.DisplayAlerts = False wb.SaveAs Filename:=diretorio & nome, FileFormat:=xlNormal 'Agora eu elimino o processo aberto do excel appExcel.Quit 'E finalizado as declarações Set wb = Nothing Set appExcel = Nothing End Sub
2 – Vídeo Demonstrativo
Verificar todas as planilhas no diretorio
O código abaixo irá verificar planilha por planilha em seu diretório
Com isso você pode mostrar em um combobox ou então abrir cada planilha
________________________________________
sub diretorio ()
Dim nomeArquivo As String
nomeArquivo = ActiveWorkbook.Name
enderecoArquivo = Left(ActiveWorkbook.FullName, Len(ActiveWorkbook.FullName) – Len(nomeArquivo))
qtdeBases = enderecoArquivo + “bases\”
nomePlanilha = Dir(qtdeBases & “*.xls*”)
Do While Len(nomePlanilha) > 0
‘ codigo que voce desejar….exemplo abrir planilha
nomePlanilha = Dir()
Loop
end sub
Bloquear Codigo VBA
Para bloquear Codigo VBA em sua planilha é bem simples. E por ser simples devemos ter cuidado de não esquecer o acesso restrito inserido.
Primeiro passo acessar o menu
Acessar o editor de código, ir em Ferramentas e clicar em Propriedades de VBAProject conforme imagem abaixo:
Senha para bloquear codigo vba
Em seguida, na próxima janela que abrir clicar na guia Proteção, marcar Bloquear projeto para exibição e digitar uma senha
Pronto seu código já está com mais segurança.
E assim toda vez que você ou qualquer pessoa tentar acessar o seu código deverá inserir a senha
Alterar Celula Automaticamente sem botão
Para alterar a celula automaticamente devemos inserir o codigo na plan1, não é em módulos
‘Este código altera o conteúdo da célula sem necessidade de ter um botão
‘Após inserir o número na célula A1 , irá exibir automaticamente na célula B1 o valor da célula A1 somando ele mesmo e dividindo por 2
Codigo para Alterar Celula Automaticamente
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Target.Value / 2 End If End Sub
Agora basta usar sua criatividade e usar este recurso do jeito que mais lhe agrada e assim deixar sua planilha mais intuitiva exemplo: como alterar uma tabela dinamica automaticamente
Segue vídeo de demonstração
Verificar Versão Office vba
Existe algumas discrepâncias de código entre o excel 2003, 2007 e as mais diversas versões, para isso vale usar um artifício simples que utiliza do código para verificar versão office .
Código Verifica Versão Office VBA
Sub VerificaVersaoExcel () If Application.Version = "12.0" Then MsgBox "A versão do Excel é 2007." ElseIf Application.Version = "11.0" Then MsgBox "A versão do Excel é 2003." ElseIf Application.Version = "8.0" Then MsgBox "A versão do Excel é 97." End If End Sub
Como Não Salvar Planilha Excel
No decorrer dos nossos códigos sempre surge a necessidade de nao salvar a planilha, ou seja não permitir que ninguém possa salvar a não ser a pessoa que saiba a senha.
Sinceramente este código é tão funcional e antigo que realmente não lembro a fonte.
Eu constantemente faço o código mais simples, mas e se um chefe especifico tem a permissão para salvar as alterações da planilha e não sabe mexer no vba? E quando isso acontecer esse codigo irá te “salvar”.
Lembrar de colocar o código dentro de EstaPasta_de_Trabalho
Código Não Salvar
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim Senha As String Senha = "123" If InputBox("Digite a senha para Salvar, ou em branco apenas fecha.", "Proteção") = Senha Then Exit Sub Else If SaveAsUI = True Then MsgBox "Não é permitido 'Salvar Como'" Cancel = True Exit Sub End If If SaveAsUI = False Then MsgBox "Não é permitido 'Salvar'" Cancel = True Exit Sub End If End If End Sub
Como Retirar Alertas E Avisos do office
Ao adicionar a linha abaixo entre os seus códigos de vba, você irá perceber que não irá exibir mensagens do office e irá retirar alertas também.
Estes alertas ocorrem quando você através do código tenta sobrescrever arquivo no salvamento, ou para abrir arquivo e etc.
Copie o Codigo Retirar Alertas excel
…
Application.DisplayAlerts = False
…
Fechar planilha automático
O código abaixo permite que você coloque o tempo que achar mais adequado para fechar planilha automático ao ficar inativa! você decide o tempo!
Para dados sigilosos é uma excelente idéia!
Bem, como nesse caso o código é segmentado achei melhor disponibilizar o código em imagens.
Define tempo para fechar
Adiciona o tempo que você acha ideal e faz a verificação ao abrir o arquivo
Incrementa tempo ao alterar dados
Verifica cada alteração dentro da planilha, adicionando maior tempo em cada uma alteração.
Fechar planilha automático
Nessa etapa se o tempo estiver expirado, será chamado a procedure de salvar e fechar a planilha.
Expiração de Data para excel
End Sub
———————————————————————-
OPÇÃO 2 – É fazer a verificação ao abrir a planilha
Private Sub Workbook_Open()
‘copiar o codigo aqui
‘Dim exdate……
End Sub