Notifications
Clear all

Macro - Problemas com copia de "Aba"

4 Posts
3 Usuários
0 Reactions
962 Visualizações
(@jeanj-2)
Posts: 0
New Member
Topic starter
 

Boa tarde,

Estou desenvolvendo uma macro simples de copiar abas de um arquivo para outro.

No arquivo principal de nome CopiaAba.xlsm possui a macro e na linha conforme abaixo não aceita uma variavel c do Sheets(c) no lugar do número, para que quando copiar a aba de Origem.xlsx para Destino.xlsx, esta aba vá para o final.

Sheets(NomeAba).Copy Before:=Workbooks("Destino.xlsx").Sheets(c) 'Aqui não aceita a variavel c representando um valor.

Existe alguma possibilidade e trabalhar desta forma?

Segue anexo a Macro CopiaAba, Origem e Destino.

Agradeço desde já a quem disponibilizar a ajuda!

JeanJ.

 
Postado : 28/11/2017 11:05 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Jean, como estamos trabalhando com varios arquivos sem declara-los(Dim) ou defini-los(Set) temos de fazer referencia aos mesmos por completo, e tambem para se copiar para o final usa-se AFTER e não BEFORE, troque pela rotina abaixo e veja se é isto.

Sub CopiaAba()

Dim c As Integer
Dim NomeAba As String

NomeAba = InputBox("Digite o nome da Aba que deseja copiar")
            
    Workbooks.Open ("C:UsersjjpintoDesktopOrigem.xlsx")
    Workbooks.Open ("C:UsersjjpintoDesktopDestino.xlsx")
    
    Windows("Origem.xlsx").Activate
    
    'Aqui está contando as abas do arquivo em primeiro plano
    'que no caso é o Origem.xlsx, uma vez que colocou a janela em primeiro plano
    'a instrução acima
    'c = Sheets().Count
    
    'Para contar do outro arquivo, temos de referenciar por completo
    c = Workbooks("Destino.xlsx").Sheets().Count
    
    'Se quer copiar para o final, o correto é AFTER e não BEFORE
    'Como estamos trabalhando com diversos arquivos sem Declara-los (Dim) e Defini-los (Set) em
    'Variáveis, temos de usar os termos por completo
    Workbooks("Origem.xlsx").Sheets(NomeAba).Copy after:=Workbooks("Destino.xlsx").Sheets(c) 'Aqui não aceita a variavel c representando um valor.
    
    Windows("Origem.xlsx").Activate
    
    ActiveWindow.Close
    MsgBox ("Cópia da Aba efetuada com sucesso")
    
End Sub

[]s

 
Postado : 28/11/2017 11:51 am
(@jeanj-2)
Posts: 0
New Member
Topic starter
 

Mauro,

É isto mesmo, agora compreendi!
Muito obrigado!!!

[]s

 
Postado : 28/11/2017 11:58 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

JeanJ.,

Boa tarde!

Estou lhe enviando somente o arquivo CopiaAba.xlsm. Os outros não fiz nenhuma modificação. Detalhe, para funcionar corretamente, salve todos na mesma pasta (alterei o caminho para pegar o caminho ativo do mesmo arquivo da macro).

Veja se é assim.

OBS.: Quando respondi, não observei que o Mauro já tinha respondido! Bom... fica aí a minha contribuição.

 
Postado : 28/11/2017 12:09 pm