... Assinatura do site por 3 anos + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$182,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Exportar várias tabelas ao mesmo tempo

Usuário Sidney:

Bom dia.

Eu tenho que exportar várias tabelas ao mesmo tempo.  Gostaria de saber como posso fazer isso, de um modo mais simplificado, ou terei que fazer códigos para cada tabela, como mostro abaixo:

DoCmd.OutputTo acOutputTable, "tab_CaracterFamiliar", _
"Excel97-Excel2003Workbook(*.xls)", "", False, "", , acExportQualityPrint

Suporte:

Sidney, você pode colocar o nome das tabelas em uma Matriz Split e o laço FOR se encarregando de realizar a repetição da exportação, com a troca do nome das tabelas.  Algo assim:

Dim k
Dim j%
k = split("NomeTabela1,NomeTabela2,NomeTabela3,NomeTabela4",",")
For j = 0 to Ubound(k)
   DoCmd.OutputTo acOutputTable, k(j) , "Excel97-Excel2003Workbook(*.xls)", _
   "", False, "", , acExportQualityPrint
Next
...

Usuário Sidney:

Avelino, deu certo! Mas gostaria de fazer as seguintes melhorias:

1- Quando der início a exportação, ele abra uma janela para eu poder escolher o local, aonde todos os arquivos serão salvos.  

2- Se por acaso houver arquivo como o mesmo nome, ele faça a substituição do mesmo.

Suporte:

Sidney, copie a função abaixo para um módulo global.  Esta função (fncLocalizarPasta) tem como objetivo selecionar uma pasta.

Public Function fncLocalizarPasta(strTitulo As String)
Dim fd As Office.FileDialog
On Error GoTo trataErro
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.AllowMultiSelect = False
.ButtonName = "Selecionar"
.InitialFileName = "c:\"
.InitialView = msoFileDialogViewList
.Title = strTítulo
End With
If fd.Show = -1 Then
    fncLocalizarPasta = fd.SelectedItems(1)
End If
sair:
    Exit Function
trataErro:
    fncLocalizarPasta = ""
    Resume sair:
End Function

Nota:  para que esta função seja executada é necessário ativar, no VBA, a referência "MICROSOFT OFFICE XX.X OBJECT LIBRARY".  Onde xx.x você substitui pela versão do seu Office.

12.0 - Office 2007
14.0 - Office 2010
15.0 - Office 2013
16.0 - Office 2016

Utilize o código abaixo para exportar as suas tabelas.  Atente para os comentários.

Dim k
Dim j%
dim Pasta$
dim Arquivo$
'aqui será aberto a tela para selecionar a pasta de destino
Pasta = fncLocalizarPasta("Selecione a pasta de destino")
'contém as tabelas envolvidas na exportação
k = split("NomeTabela1,NomeTabela2,NomeTabela3,NomeTabela4",",")
For j = 0 to Ubound(k)
   Arquivo = pasta & "\" & k(j) & ".xls"
   WizHook.key = 51488399
   'verifica se o arquivo já existe na pasta de destino
   If wizhook.fileexists(Arquivo) then
       'arquivo já existe na pasta de destino e será deletado
       filesystem.Kill(arquivo)
   end if
   DoCmd.OutputTo acOutputTable, k(j) , "Excel97-Excel2003Workbook(*.xls)", _
   Arquivo, False, "", , acExportQualityPrint
Next

Nota: sobre o uso da coleção WizHook, neste meu artigo.

Usuário Oliveira:

Avelino, deu certinho,

obrigado mais uma vez.


 

 


Não há comentário

Envie seu comentário: