Bom dia Pessoal, já vi essa duvida em diversos posts e aqui está uma solução simples que pode ser implementado em qualquer projeto. Se você deseja Exportar um relatório em pdf para cada registro que tenha em seu bd, basta usar um comando de repetição atrelado ao limite de registros que tem em sua tabela, ou seja, quando a consulta SQL chegar ao ultimo registro, o comando de repetição para e a mensagem de que todos os arquivos foram exportados separadamente ao seu destino é exibida. Espero que ajudem vocês, eu fiquei quebrando a cabeça muito tempo na internet atras de uma simples solução. Bom estudos.
Private Sub Ativar_desativar_Relatorios_Sepados_Click()
Dim strArquivo As String
Dim strLocal As String
Dim Soma As Integer
Dim rs As Recordset
Dim CDAssociado As String
Dim Nome As String
Dim Contador As Integer
Set rs = CurrentDb.OpenRecordset("SELECT COUNT(*) AS TOTAL FROM Alunos")
registro = rs!Total
rs.Close
Contador = 1
Soma = 0
Do While Contador <= registro
Set rs = CurrentDb.OpenRecordset("SELECT [Alunos].[Cód_Aluno],[Alunos].[Descrição] FROM Alunos where [Alunos].[Cód_Aluno] = " & Contador & "")
CDAssociado = rs!Cód_Aluno
Nome = rs!Descrição
'Abre o relatório devidamente filtrado e oculto
DoCmd.OpenReport "RptCad_Assoc", acViewPreview, , "Cód_Aluno=" & CDAssociado, acHidden
strArquivo = "A.A.A.E.C.F.-" & CDAssociado & " - " & Nome & ".pdf"
strLocal = CurrentProject.Path & "\Relatorios\" & strArquivo
'Gera arquivo pdf do relatório previamente aberto e filtrado.
DoCmd.OutputTo acOutputReport, "RptCad_Assoc", acFormatPDF, strLocal
'Fecha o relatório
DoCmd.Close acReport, "RptCad_Assoc"
Soma = Soma + Contador
Contador = Contador + 1
Loop
rs.Close
strLocal = CurrentProject.Path & "\Relatorios"
MsgBox "Todos os dados foram exportados com sucesso em: " & strLocal & ""
End Sub
Qualquer dúvida estou a disposição.
Att,
Rafael