Exportar várias tabelas ao mesmo tempo
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
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 |