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
Como Abrir Internet com VBA
Olá pessoal, segue um código para abrir internet com VBA, uma página web qualquer.
Para ver o código abaixo funcionando basta abrir um módulo, copiar o código abaixo e colar
Lembrando que para funcionar o endereço web deve existir, caso contrário ocorrerá erro (que poderá ser tratado com um goto)
Código Abrir Internet com VBA
___________________________________________________________
___________________________________________________________
Obs.: Infelizmente tive que colocar o código como imagem, estava ocorrendo conflito com o php do blog
Inserindo um modulo em outra planilha
Olá Pessoal
Abaixo segue um exemplo pra quem sempre desejou um código de vba que possa inserir uma macro em outra planilha.
O uso serve para o mais diverso… conforme a criatividade você pode fazer uma atualização vba sem precisar alterar manualmente (veja o post Excluindo um modulo em outra planilha), quem sabe uma planilha que gera macros para clientes ou ainda fazer uma expiração de data que apague os dados.
Tentei deixar o mais simples possível e assim ficar fácil o entendimento, e portanto não coloquei para Salvar após inserir o módulo ou Paralisar a tela antes de executar.
* Para o código abaixo funcionar é necessário habilitar opção de confiança de objetos VBA
* Também é necessário adicionar na biblioteca a referencia Extensibility, dúvida ver o vídeo
_________________________________________________________________________
Sub INSERIR_MODULO_EXCELEVBA_COM_BR() Dim ObjVbProj As VBProject Dim ObjVbComp As VBComponent Dim ObjVbMod As CodeModule Dim txtMacroLinha2 As String Dim txtMacroLinha3 As String Dim txtMacroLinha4 As String 'abaixo segue o código que será inserido em outra planilha txtMacroLinha2 = "Sub NovoProcedimento()" txtMacroLinha3 = " Msgbox ""Olá BemVindo excelevba.com.br"" " txtMacroLinha4 = "End Sub" ''----------------opcao 1------------------------------- ''caso queira abrir uma nova macro 'Workbooks.Add 'Set ObjVbProj = ActiveWorkbook.VBProject ''----------------opcao 2------------------------------ ''abrir um arquivo antigo endereco = "c:\temp\codigoAntigo.xlsm" Workbooks.Open (endereco) Set ObjVbProj = ActiveWorkbook.VBProject ''---------------------------------------------- Set ObjVbComp = ObjVbProj.VBComponents.Add(vbext_ct_StdModule) ObjVbComp.Name = "Mod1" 'nome do módulo Set ObjVbMod = ObjVbComp.CodeModule ObjVbMod.InsertLines 2, txtMacroLinha2 ObjVbMod.InsertLines 3, txtMacroLinha3 ObjVbMod.InsertLines 4, txtMacroLinha4 'Retirar o objeto Set ObjVbMod = Nothing DoEvents End Sub
___________________________________________________
Segue vídeo demonstrativo
String de Conexão
Segue abaixo um site com diversas conexões com banco de dados, muito útil quando esquecemos alguma conexão ou desejamos saber uma conexão com um banco que não estamos acostumados.
Nesse site http://www.connectionstrings.com/ encontramos conexões para diversos bancos Oracle, Access, SQL Server, MySQL, Postgre, DB2, Firebird, , Informix, Interbase e etc.
Acesses: http://www.connectionstrings.com/
Abrir documento de forma oculta / Excel abrir Access
Abaixo há dois exemplos de código, o primeiro irá criar um aplicativo access e abrir o banco de forma oculta (poderia ser o Excel também).
E o segundo código para eliminar o objeto criado.
Atenção, ao criar o documento de forma invisivel, toda vez que quiser referencia-lo para copiar dados, colar e etc, deverá o objeto. Exemplo: objetoCriado.worksheet(1).cells(1,1).select
______________________________________________________
Sub criarObjeto()
endereco = ThisWorkbook.Path + “\”
Set A = CreateObject(“Access.Application”) ‘Poderia ser “Excel.Application” também
A.Visible = False
A.OpenCurrentDatabase (endereco + “tblExemplo.mdb”)
‘Se fosse excel seria: a.Workbooks.Open (endereco + “planilha.xls”)
End Sub
________________________________________________________
Sub encerrarObjeto() ‘Use este código para terminar com o objeto criado
A.CloseCurrentDatabase
A.Quit
Set A = Nothing
End Sub
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
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
Abrir Arquivo De Texto com vba
Que tal aprender como abrir um arquivo de texto com vba?? Que tal usando a tela do windows para selecionar estes arquivos? Não é muito legal?
Pode ser muito útil em sua rotina de trabalho quando você recebe um pdf (então você passa para texto) e precisa passar para o excel.
Geralmente não é muito agradável de pegar o dados do texto e passar para excel com vba.
Então sendo bem direto segue o código abaixo! Copiem e teste no seu excel vba.
Segue Código para abrir um arquivo de texto com vba
Sub abrirArquivo() MsgBox "Selecione o arquivo txt", vbOKOnly, "Seleção de Arquivo" 'ABRIR ARQUIVO arquivo = " " Dim fd As FileDialog Set fd = Application.FileDialog(msoFileDialogFilePicker) Dim arquivo_temp As Variant With fd .AllowMultiSelect = True If .Show = -1 Then For Each arquivo_temp In .SelectedItems arquivo = arquivo_temp Next arquivo_temp End If End With Set fd = Nothing 'Abaixo é um código para ajustar as colunas do .txt para o excel que varia conforme cada tipo de arquivo 'Para você saber os seus parametros ideais, uma dica é criar uma macro e abrir um .txt e definir as colunas 'E depois ver o código que foi gerado. Workbooks.OpenText arquivo _ , Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, TextQualifier:=xlDoubleQuote _ , ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False _ , Space:=False, Other:=False, FieldInfo:=Array(Array(0, 1), Array(38, 1), _ Array(91, 1)), TrailingMinusNumbers:=True 'Ajuste automatico de coluna do excel Columns("B:B").EntireColumn.AutoFit Columns("A:A").EntireColumn.AutoFit End Sub
Vídeo explicativo do codigo
Inserir senha de abertura no excel
Como no meu trabalho havia pessoas que não sabia colocar senha de abertura no excel manualmente resolvi criar este artigo para facilitar a todos.
Se por acaso você neste artigo e gostaria de saber como fazer para colocar em vba, então veja o artigo Inserir senha no arquivo excel com vba
Coloco aqui um pequeno tutorial para excel 2007 e as versões posteriores
Senha de abertura no excel 2007
Realmente acho estranho o modo como os desenvolvedores do Excel 2007 disponibilizaram a opção de proteger a abertura do arquivo.
1 > Para inserir a proteção de abertura é necessário apertar o botão
2 > Clicar em Salvar Como
3 > Irá abrir uma janela…Escolha o diretório,e em baixo existe um botão Ferramentas (do lado do botão salvar)clique nele
4 > Escolha a opção -> Opções Gerais
5 > Agora você poderá colocar a senha e confirmá-la
6 > Irá pedir mais uma vez a senha
7 > Agora clique e salvar e fim
Senha de abertura no excel 2010
Demonstração através do vídeo
Abrir Arquivo Com Vba 2
Com o código abaixo é possível abrir vários arquivos utilizando a janela do windows:
Sub abrir() Dim arqNome As Variant 'forma o array e grava na variável pra selecionar multi-arquivos arqNome = Application.GetOpenFilename(, , , , True) 'limitador, define quantos itens estará no array For Y = 1 To UBound(arqNome) Workbooks.Open arqNome(Y) Next End Sub
__________________
Veja Também: Selecionar/ativar Planilha