Notifications
Clear all

AJUDA COM MACRO PARA ABRIR PLANILHAS

10 Posts
2 Usuários
0 Reactions
1,454 Visualizações
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

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

 
Postado : 28/03/2016 12:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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....

 
Postado : 28/03/2016 1:46 pm
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

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ó...

 
Postado : 28/03/2016 7:41 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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
 
Postado : 28/03/2016 9:05 pm
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

Cara serviu eu so alterei umas coisinhas valeu msm

 
Postado : 29/03/2016 5:42 am
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

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.

 
Postado : 29/03/2016 5:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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
 
Postado : 29/03/2016 10:27 am
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

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...

 
Postado : 29/03/2016 11:23 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

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

 
Postado : 29/03/2016 2:39 pm
(@arthurcd)
Posts: 69
Estimable Member
Topic starter
 

Perfeito cara, resolveu sim, valeu msm

 
Postado : 31/03/2016 8:17 am