Boa tarde,
tenho um problema onde preciso remover as 4 primeira colunas de uma planilha, simples não? porem são 300 planilhas onde eu tenho que abrir excluir as colunas A, B, C, D e fechar...abrir a seguinte...e fazer a mesma coisa...Enfim existe um meio de fazer isso automaticamente??
Att,
Arthur C. Dias
Existe usando VBA.
Precisarei saber o seguinte, só pra confirmar, por planilha vc se refere a arquivo xlsx, certo? ok!
Esses arquivos estão todos numa pasta/diretório? qual o nome da planilha dentro deles, que precisa ter as colunas removidas?
qual critério para abertura e fechamento deles? o nome dos arquivos tem um padrão ?
Enfim, dê mais detalhes.... temos que escrever um código VBA que fará todo esse trabalho pra vc, e é um código fácil, vc vai ter a resposta que precisa antes do fim do dia hoje....
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Cara Serio? Eu as coloquei dentro de uma pasta na área de trabalho Cujo nome é BD,as planilhas tem os nomes de Base_D1, Base_D2,Base_D3....até 300 basta excluir as 4 primeiras colunas dentro delas que tem informações desnecessárias...após a exclusão das colunas é só fechar a planilha e ir para próxima...acho q é só...
Vou supor que na pasta que indicou tem somente os arquivos que pretende editar e excluir as colunas, assim não precisamos trabalhar com o nome nem quantidade, a rotina abaixo abre todos os arquivos que estiverem na pasta especificada desde que seja um arquivo excel com extensão "xlsx", deleta as colunas, Salva e Fecha, faça um teste, mas se for precisar utilizar os nomes avise :
ub Abrir_Deletar_Colunas() Dim FSO As Object Dim Pasta As String Dim Planilha As Object Dim OpenBook As String Set FSO = CreateObject("Scripting.FileSystemObject") 'Pasta com as planilhas que serão abertas 'Ajuste para o local dos seus arquivos Pasta = "C:UsersUsuarioDesktopBD" Application.ScreenUpdating = False For Each Planilha In FSO.GetFolder(Pasta).Files 'Abre somente arquivos com a extensão "xlsx" If InStr(1, Planilha, ".xlsx") = 0 Then GoTo PRÓXIMO Workbooks.Open (Planilha) OpenBook = ActiveWorkbook.Name 'Deleta as colunas Columns("A:D").Delete Shift:=xlToLeft 'Fecha o arquivo e salva Workbooks(OpenBook).Close True PRÓXIMO: Next Application.ScreenUpdating = True MsgBox "Arquivos atualizados com Sucesso!", vbInformation, "Aviso" End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Cara serviu eu so alterei umas coisinhas valeu msm
Só uma duvida se fosse para excluir linhas ao invés de colunas qual seria o comando?
Cara desculpa agora que abri uma outra pasta os arquivos estão em xls a macro é a mesma ela só não funciona pq o excel abre os arquivos xls em modo de exibição protegido...se não funcionaria perfeitamente.
arthur, para excluir linhas, utilize :
Rows("2:9").Delete deleta as linhas 2 até a 9
Quanto a extensão pode utilizar da forma abaixo, veja que dá para utilizar outros If(s) ou até mesmo um select Case se adicionar outras extensões.
Sub deletarcolunas2() Dim FSO As Object Dim Pasta As String Dim Planilha As Object Dim OpenBook As String Set FSO = CreateObject("Scripting.FileSystemObject") 'Pasta com as planilhas que serão abertas 'Ajuste para o local dos seus arquivos Pasta = "C:UserscoutinhoDesktopBD" For Each Planilha In FSO.GetFolder(Pasta).Files sExt = LCase(Right(Planilha, Len(Planilha) - InStrRev(Planilha, ".", , 1))) If sExt = "xls" Then Workbooks.Open (Planilha) OpenBook = ActiveWorkbook.Name 'Deleta as colunas Columns("A:D").Delete Shift:=xlToLeft 'Fecha o arquivo e salva Workbooks(OpenBook).Close True End If Next End Sub
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Então Mauro eu entendi que basta trocar o xlsx para xls o problema é que o xls abre com um aviso de modo de exibição privado ai a macro falha, eu tive de marcar a pasta onde estão as planilhas como confiável nas opções do Excel, mesmo assim aparece uma mensagem perguntando se eu quero continuar com o procedimento a cada planilha aberta pela macro...porem a formula esta funcionando... o único problema é essa mensagem onde eu tenho que ficar clicando em continuar toda hora rsrs mais você já me ajudou bastante...em anexo uma imagem da mensagem que está aparecendo...
arthur, a mensagm é pelo fato das versões do excel, acontece quando abrimos arquivos do excel 2003 em versões mais novas. Fiz algumas pesquisas e pelo que entendi é só desabilitar a caixa de verificação de compatibilidade, e o único código que encontrei seria o ddo link abaixo :
How can I permanently disable Excel's Compatiblity Checker?
https://msdn.microsoft.com/en-us/library/bb216059.aspx
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) 'Macro Purpose: Disable compatibility checker Wb.CheckCompatibility = False End Sub
Não testei, tambem não sei o porque meus aquivos de 2003 não aparecem esta mensagem, vou ver se consigo algum arquivo e faço os testes.
Por enquanto só desabilite conforme citei e faça os testes, outras dicas seria mexer no registro, mas isto tem de ser feita manualmente.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Perfeito cara, resolveu sim, valeu msm