criar um novo arquivo excel dinamicamente

4
Criar um novo arquivo excel dinamicamente Por Reinaldo Coral | Oi amigos. Hoje vou disponibilizar para vocês um código que eu desenvolvi visando a criação de um arquivo excel, em tempo de execução, ou seja, criar um novo arquivo através de uma macro personalizada. Neste exemplo prático, teremos 4 planilhas no arquivo original, sendo que três delas conterão o saldo das vendas de três setores distintos de uma empresa e 1delas exibirá o resumo de todos e o total geral das vendas. Até aqui, nada de mais. Nosso código passa a funcionar a partir daí. Iremos disponibilizar uma funcionalidade nesta planilha de resumos, que fará o seguinte: criará uma cópia de qualquer uma das planilhas dos setores, individualmente, em um novo arquivo, para ser enviado poremail , por exemplo, sem necessidade de informar os demais valores dos outros setores da empresa para quem não seja conveniente informar. Vamos ao trabalho. Crie seu arquivo com as 4 planilhas: 1. Resumo 2. Setor Alfa 3. Setor Beta 4. Setor Gamma Na planilha Resumo, insira três CommandButton e renomeie-os assim: 1. cmd_Salvar1 2. cmd_Salvar2 3. cmd_Salvar3 Abra o editor do VBA (Alt + F11). Selecione a planilha Resumo na janela do VBAProject e exiba seu código (F7) e digite o seguinte código: Private Sub cmd_Salvar1_Click() Call CriaArquivo(Sheets("Setor Alfa"), ThisWorkbook.Path) End Sub Private Sub cmd_Salvar2_Click() Call CriaArquivo(Sheets("Setor Beta"), ThisWorkbook.Path) End Sub

Upload: rdcaselli

Post on 16-Nov-2015

47 views

Category:

Documents


1 download

DESCRIPTION

Criar Um Novo Arquivo Excel Dinamicamente

TRANSCRIPT

Criar um novo arquivo excel dinamicamentePorReinaldo Coral|Oi amigos. Hoje vou disponibilizar para vocs um cdigo que eu desenvolvi visando a criao de um arquivo excel, em tempo de execuo, ou seja, criar um novo arquivo atravs de uma macro personalizada.Neste exemplo prtico, teremos 4 planilhas no arquivo original, sendo que trs delas contero o saldo das vendas de trs setores distintos de uma empresa e 1delas exibir o resumo de todos e o total geral das vendas. At aqui, nada de mais. Nosso cdigo passa a funcionar a partir da.Iremos disponibilizar uma funcionalidade nesta planilha de resumos, que far o seguinte: criar uma cpia de qualquer uma das planilhas dos setores, individualmente, em um novo arquivo, para ser enviado poremail, por exemplo, sem necessidade de informar os demais valores dos outros setores da empresa para quem no seja conveniente informar.

Vamos ao trabalho.Crie seu arquivo com as 4 planilhas:1. Resumo2. Setor Alfa3. Setor Beta4. Setor GammaNa planilha Resumo, insira trs CommandButton e renomeie-os assim:1. cmd_Salvar12. cmd_Salvar23. cmd_Salvar3Abra o editor do VBA (Alt + F11). Selecione a planilha Resumo na janela do VBAProject e exiba seu cdigo (F7) e digite o seguinte cdigo:Private Sub cmd_Salvar1_Click() Call CriaArquivo(Sheets("Setor Alfa"), ThisWorkbook.Path)End Sub

Private Sub cmd_Salvar2_Click() Call CriaArquivo(Sheets("Setor Beta"), ThisWorkbook.Path)End Sub

Private Sub cmd_Salvar3_Click() Call CriaArquivo(Sheets("Setor Gamma"), ThisWorkbook.Path)End SubAgora crie ummduloe digite:Sub CriaArquivo(mPlan As Worksheet, mPathSave As String)Dim NovoArquivoXLS As WorkbookDim sht As Worksheet

'Cria um novo arquivo excel Set NovoArquivoXLS = Application.Workbooks.Add

'Copia a planilha para o novo arquivo criado mPlan.Copy Before:=NovoArquivoXLS.Sheets(1)

'Salva o arquivo NovoArquivoXLS.SaveAs mPathSave & "\" & mPlan.Name & ".xls"

MsgBox "Novo arquivo salvo em: " & mPathSave & "\" & mPlan.Name & ".xls", vbInformation

End Sub

Explicando o que fizemos. Ao clicarmos no boto 1, por exemplo, criaremos um novo arquivo com os dados da planilha correspondente ao Setor Alfa e salva com o mesmo nome da planilha emquestoe na mesma pasta da planilha original. Legal n. Agora s usar a criatividade e adaptar as suas necessidades.

Alguns termos aprendidos neste artigo.Application.Workbooks.AddCria uma nova pasta de trabalho. A nova pasta de trabalho se torna a pasta de trabalho ativa. Retorna um objeto Workbook.

SaveAsSalvas alteraes na pasta de trabalho um arquivo diferente.expresso.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)expressonecessria. Uma expresso que retorna um dos objetos acima.FilenameVariant opcional. Uma seqncia de caracteres que indique o nome do arquivo a ser salvo. Voc pode incluir um caminho completo; se no o fizer, o Microsoft Excel salvar o arquivo na pasta atual.FileFormatVariant opcional. O formato do arquivo que deve ser usado ao salv-lo. Para obter uma lista de escolhas vlidas, consulte a propriedade FileFormat. Para um arquivo existente, o formato padro o ltimo formato de arquivo especificado; para um novo arquivo, o padro o formato da verso do Excel usada.PasswordVariant opcional. Uma seqncia de caracteres distinguindo maisculas de minsculas (de at 15 caracteres) que indique a senha de proteo a ser dada ao arquivo.WriteResPasswordVariant opcional. Uma seqncia de caracteres que indique a senha de reserva de gravao deste arquivo. Se um arquivo for salvo com a senha e esta no for fornecida quando o arquivo for aberto, o arquivo ser aberto como somente leitura.ReadOnlyRecommendedVariant opcional. True para exibir uma mensagem quando o arquivo aberto, recomendando que o arquivo seja aberto como somente leitura.CreateBackupVariante opcional. True para criar um arquivo de backup.AccessModeXlSaveAsAccessMode opcional.XlSaveAsAccessMode pode ser uma das seguintes constantes:xlExclusive (modo exclusivo)xlNoChange padro (no alterar o modo de acesso)xlShared (lista compartilhada)Se este argumento for omitido, o modo de acesso no ser alterado. Esse argumento ignorado quando voc salva uma lista compartilhada sem alterar o nome do arquivo. Para alterar o modo de acesso, use o mtodo ExclusiveAccess.ConflictResolutionXlSaveConflictResolution opcional.XlSaveConflictResolution pode ser uma das seguintes constantes:xlUserResolution (exibir a caixa de dilogo de soluo de conflitos)xlLocalSessionChanges (aceitar automaticamente as alteraes do usurio local)xlOtherSessionChanges (aceitar outras alteraes em vez das alteraes do usurio local)Se este argumento for omitido, a caixa de dilogo de soluo de conflitos ser exibida.AddToMruVariant opcional. True para adicionar esta pasta de trabalho lista de arquivos usados recentemente. O valor padro False.TextCodePageVariant opcional. No usado no Microsoft Excel em ingls americano.TextVisualLayoutVariant opcional. No usado no Microsoft Excel em ingls americano.LocalVariant opcional. True salva os arquivos no idioma do Microsoft Excel (incluindo as configuraes do Painel de controle). False (padro) salva os arquivos no idioma do Visual Basic for Applications (VBA), que geralmente o ingls (E.U.A.), a menos que o projeto VBA em que Workbooks.Open est sendo executado seja um projeto VBA XL5/95 antigo e internacionalizado.

CopyCopia a planilha para outro local da pasta de trabalho.expresso.Copy(Before,After)expressonecessria. Uma expresso que retorna um dos objetos acima.BeforeVariantopcional. A planilha antes da qual a planilha copiada ser inserida. No possvel especificarBeforeseAfterfor especificado.AfterVariantopcional. A planilha aps a qual a planilha copiada ser inserida. No possvel especificarAfterseBeforefor especificado.