Grazie Alex, mi sei stato di aiuto evidenziando i miei errori...
In base ai tuoi consigli ho modifica il codice in questo modo (inserendo anche altri piccoli dettagli) ed ora funziona.
Sicuramente è migliorabile (considera che è il mio primo codice) anche perché se lancio la routine due volte consecutivamente mi appare il seguente errore :
Errore di run-time '3014' :
Impossibile aprire altre tabelle
Grazie ancora per l'aiuto
Sub Stampa()
Rem Dimensionamento delle variabili
Dim Recordcorrente As Long
Dim Nomefile As String
Dim DBCorrente As DAO.Database
Dim Tabella As DAO.Recordset
Dim Repository As String
Dim Discente As String
Dim Nomecorso As String
Rem Apertura tabella
Set DBCorrente = CurrentDb
Set Tabella = DBCorrente.OpenRecordset("9999 - Stampa attestati", dbOpenDynaset)
Rem Definizioni delle varibili
Nomereport = "Stampa attestati"
Repository = Environ("USERPROFILE") & "\Desktop\Stampa Attestati"
Rem Creazione repository
If Len(Dir(Repository, vbDirectory)) = 0 Then
MkDir Environ("USERPROFILE") & "\Desktop\Stampa Attestati"
End If
Rem Ciclo di stampa
Do While Not Tabella.EOF
Discente = Tabella.Fields("Discente")
Recordcorrente = Tabella.Fields("Idattestato")
Nomecorso = Tabella.Fields("Descrizione")
Nomefile = Repository & "\" & Nomecorso & " - " & Tabella.Fields("Discente") & ".pdf"
DoCmd.OpenReport Nomereport, acViewReport, , "[9999 - Stampa attestati].[IDattestato] =" & Recordcorrente, acHidden
DoCmd.SelectObject acReport, Nomereport
DoCmd.OutputTo acOutputReport, Nomereport, acFormatPDF, Nomefile
DoCmd.Close acReport, Nomereport
Tabella.MoveNext
Loop
Rem Chiudi Database/Tabelle
Tabella.Close
DBCorrente.Close
Rem Avvisi
MsgBox "Stampa completata. Gli attestati sono nella cartella STAMPA ATTESTATI sul desktop."
End Sub