Exportar várias tabelas ao mesmo tempo
Adquira a assinatura vitalícia do site e passe a ter acesso aos arquivos exemplos, vídeos, revistas, livros e ao kit de montagem de ribbons. Você terá suporte por e-mail, caso necessite tirar dúvidas pontuais. Clique AQUI e veja como obter um dos nossos planos. Clique AQUI e faça uma visita a seção Downloads do site e verifique as centenas de arquivos que estará à sua disposição. Clique AQUI e faça uma visita a seção Vídeos do site e veja a lista que estará disponível ao se tornar o nosso assinante vitalício. Clique AQUI e saiba mais detalhes sobre o kit de montagem de ribbons (deixe seus aplicativos com aspecto profissional).
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 |