Ir ao conteúdo
  • Cadastre-se

Posts recomendados

Postado

pessoal,

tenho uma pasta com cerca de 500 planilhas todas no mesmo formato e no mesmo layout. e eu preciso por o mesmo cabeçalho.

eu consigo fazer uma macro para isso?

Postado

@djacy.neto  Veja se assim resolve,

 

Coloque alguns arquivos em C:\Teste para testar se é isso mesmo, deixe apenas arquivos do Excel.

 

A macro vai abrir todos os arquivos, definir a primeira linha como cabeçalho fixo, salvar e fechar.

 

Sub Macro()
    Dim Diretorio   As String
    Dim Arquivo     As String
    Dim Pasta       As Workbook
    
    Diretorio = "C:\Teste\"
    
    Arquivo = Dir(Diretorio & "*")
    
    While Arquivo <> ""
        Set Pasta = Workbooks.Open(Diretorio & Arquivo)
            Pasta.ActiveSheet.PageSetup.PrintTitleRows = "1:1"
            Pasta.Save
            Pasta.Close
        Arquivo = Dir
    Wend
End Sub

 

  • Curtir 1
Postado

@Midori  desculpa demora, precisava de tempo p testar, nesse seu script ele define cabeçalho fixo certo?

meu problema é que o cabeçalho nao existe na planilha.  ta ai exemplo1 como vem a planilha

e exemplo2 como ela deve ficar.

 

 

exemplo1.JPG

exemplo2.JPG

Postado

@djacy.neto  Veja se assim resolve,

 

Sub Macro()
    Dim Diretorio   As String
    Dim Arquivo     As String
    Dim Pasta       As Workbook
    
    Diretorio = "C:\Teste\"
    Arquivo = Dir(Diretorio & "*")
    
    While Arquivo <> ""
        Set Pasta = Workbooks.Open(Diretorio & Arquivo)
            With Pasta.ActiveSheet
                .[1:1].Insert Shift:=xlDown
                .[A1:M1] = Array("ORGAO", "MAT", "UPG", "UF", _
                    "NOME", "CPF", "COD", "SEQ", "VALOR", "PRAZO", _
                    "TIPO", "STATUS", "CONTRATO")
                .PageSetup.PrintTitleRows = "1:1"
            End With
            Pasta.Save
            Pasta.Close
        Arquivo = Dir
    Wend
End Sub

 

  • Obrigado 1
Postado

@Midori  com arquivos em xlsx deu super certo!

uma pergunta, se o arquivo aberto estiver no formato csv eu preciso declarar?

eu tentei fazer com csv e ele deixa todo conteudo na 1 coluna e insere o cabeçalho. fica algo assim:

ele traz todo cabeçalho na celula a1

 

 

errolayout.JPG

Postado

@djacy.neto Tente rodar com esta condição,

 

With Pasta.ActiveSheet
    If Right(Arquivo, 3) = "csv" Then
        .[A:A].TextToColumns DataType:=xlDelimited
    Else
        .[1:1].Insert Shift:=xlDown
        .[A1:M1] = Array("ORGAO", "MAT", "UPG", "UF", _
            "NOME", "CPF", "COD", "SEQ", "VALOR", "PRAZO", _
            "TIPO", "STATUS", "CONTRATO")
    End If
    .PageSetup.PrintTitleRows = "1:1"
End With

 

Assim a macro vai tabular os campos dos arquivos csv.

 

Se no csv não tiver o nome dos campos, coloque a linha do insert fora do If-Else e atribua os nomes como fiz para os outros casos (.[A1:M1] = Array("ORGAO", "MAT"...)

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...