Notifications
Clear all

Copiar Plans em novo Arquivo.xls e Salvar o mesmo no C

8 Posts
2 Usuários
0 Reactions
2,324 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Galera,

procurei procurei e não achei nem no google nem na busca do forum! então segue meu problema!

Preciso de uma ajuda avançada, a ajuda é a seguinte, possuo dois arquivos EXCEL!

arquivo 1 = BASE
arquivo 2 = DESTINO

arquivo 1 = possui 3 plans sendo assim seus respectivos nomes = Nomes , Endereços , Telefones

Preciso que em codigo VBA eu gere um arquivo 2 com as três abas copiadas e logo após copiar, salvar em uma pasta no C: da maquina

Obrigado Galera 8-)

 
Postado : 31/10/2012 12:15 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Marcelo,

Boa Tarde!

O que você quer é apenas gerar uma cópia do seu Arquivo1 Chamado BASE.xlsx em uma pasta na Unidade C com o nome DESTINO.xlsx?

Se for isso, basta colocar o código abaixo:

Sub CopiarArquivo()
    ActiveWorkbook.SaveAs Filename:= _
        ActiveWorkbook.Path & "DESTINO.xlsx", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
 
Postado : 31/10/2012 12:31 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Marcelo,

Boa Tarde!

O que você quer é apenas gerar uma cópia do seu Arquivo1 Chamado BASE.xlsx em uma pasta na Unidade C com o nome DESTINO.xlsx?

Se for isso, basta colocar o código abaixo:

Sub CopiarArquivo()
    ActiveWorkbook.SaveAs Filename:= _
        ActiveWorkbook.Path & "DESTINO.xlsx", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

Amigo,

Primeiramente obrigado pela ajuda, mas não é tão simples assim minha duvida acho que não citei o problema corretamente!

Na planilha BASE possuo 40 ABAS, dentre elas só quero copiar 3 das 40 existentes, estou me perdendo na forma de instanciar(SETAR) as abas em uma WORKBOOK na memória e após efetuar a copia pegar este OBJETO e executar um SAVE!

 
Postado : 31/10/2012 1:19 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Um exemplo bem mal feito é esse aqui!

Set xls = createobject("Excel.application")

xls.worksheets(1) = plan1.copy
xls.worksheets(2) = plan23.copy
xls.worksheets(3) = Plan31.copy

não to conseguindo gerar uma SINTAXE de copiar e colar entre o workbook ativo para o NOVO workbook SETADO na memória :[!

 
Postado : 31/10/2012 1:33 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

De uma olhada neste Tópico : http://www.planilhando.com.br/forum/viewtopic.php?f=16&t=5265&p=27584&hilit=Array#p27584, creio que lhe ajudará

 
Postado : 31/10/2012 2:26 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Marcelo,

Bom Dia!

Ok.

Troque o código por este:

Sub CopiarArquivo()
    Dim Caminho As String
    Caminho = ActiveWorkbook.Path
    Sheets(Array("Plan1", "Plan23", "Plan31")).Select
    Sheets(Array("Plan1", "Plan23", "Plan31")).Copy
    ActiveWorkbook.SaveAs Filename:= _
        Caminho & "DESTINO.xlsx", FileFormat _
        :=xlOpenXMLWorkbook, CreateBackup:=False
End Sub
 
Postado : 01/11/2012 6:18 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ae galera consegui depois de fuçar e fritar o cerebro a alguns dias só consegui tempo para fazer isso hj!

Segue codigo caso alguem precise fazer algo igual ou similar!

'Seta(Armazena) ABAS do arquivo principal em OBJETOS
Set CAPA = Worksheets("Layout_Renovação_Capa")
Set DADOS = Worksheets("Layout_Renovação_Dados")
Set DADOS2 = Worksheets("Layout_Renovação_Sinistro")

'Seta novo WORKBOOK na memória
Set novoArquivo = Workbooks.Add

'Copia plans("ABAS") para novo arquivo setado na memória anteriormente de acordo com seus respectivos INDEXS
CAPA.Copy novoArquivo.Sheets(1)
DADOS.Copy novoArquivo.Sheets(2)
DADOS2.Copy before:=novoArquivo.Sheets(3)

agora vai o codigo que usei para salvar se alguem precisar fazer algo igual!

'Ativa WORKBOOK novoArquivo
Workbooks(2).Activate

'Desativa qualquer mensagens(OFFICE & EXCEL) quando for salvar arquivo
Application.DisplayAlerts = False
'Salva arquivo na pasta desejada(Concatenei variaveis para gerar nome arquivo especifico sendo salvo ( você muda como quiser )
Workbooks(2).SaveAs "C:NOVOS" & numeroCasa & "" & " Apartamento - " & numeroApartamento & " NumeroCarro - " & numeroCarro & " " & nomePessoa & "Numero " & numero & ".xlsx", , , , , , xlShared

se for um save normal no c da maquina segue!
Workbooks(2).SaveAs "C:".xlsx", , , , , , xlShared

Abraço

 
Postado : 27/11/2012 1:00 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa tarde!!

Olá Marcelo-CTBA, obrigado pelo retorno!

Para manter o fórum organizado, lembre se de marca lo como resolvido, quando for o caso!!

Veja como em:
Marcar Tópico como Resolvido e Agradecimento
viewtopic.php?f=7&t=3784

Att

 
Postado : 27/11/2012 1:40 pm