
Originariamente inviata da
Rickycast
Riprendo la precedente discussione per aggiungere ancora un problema; l'argomento è sempre quello esposto in quella discussione, ossia la difficoltà di chiudere un File.pdf da VB6.
Gibra, ma anche Renygade, mi avevano dato soluzioni ed io ho adottato quella di Gibra per semplicità, ossia intercettare l'eventuale errore nel caso il File fosse aperto e chiedere all'utente di chiuderlo.
Fra le cose che però devo fare, c'è anche quella di aprirlo questo benedetto File.pdf e l'aperture l'ho fatta tramite "ShellExecute". Sembra che tutto funzioni, ma purtroppo il File si apre solo la prima volta; le volte successive si apre "Adobe Reader" che mi comunica: "Errore durante l'apertura del documento. Questo file è già aperto o è usato da un'altra applicazione". Evidentemente sbaglio qualcosa nella mia procedura che riporto qui sotto:
codice:
Dim DaCancellare As Object, FilePDF As String
Dim Attesa
Set DaCancellare = CreateObject("Scripting.FileSystemObject")
Screen.MousePointer = vbHourglass
FilePDF = "C:\Documents and Settings\" & NomeUser & "\Desktop\" & "VenditePerCliente" & ".pdf"
If DaCancellare.FileExists(FilePDF) = True Then
Kill FilePDF
End If
Set DaCancellare = Nothing
' Avvia la stampa in PDF sul Desktop del Report "VenditePerCliente"
NomeReport = "VenditePerCliente" ' Il nome del Report di Access che si vuole convertire in PDF
'****************************************************************************************************
NomeFilePDF = "VenditePerCliente" ' Il nome che si vuole dare al File Convertito in PDF
'****************************************************************************************************
OrigineAllegato = "C:\Documents and Settings\" & NomeUser & "\Desktop\" & NomeFilePDF & ".pdf"
' Indica il Path in cui si intende archiviare il File da convertire, completo di Nome del File,
' OPPURE dal quale prendere il File da Allegare alla Mail o da Stampare
'****************************************************************************************************
StampaReportInPDF ' genera la stampa in .pdf partendo da un report di Access
Set Attesa = CreateObject("Scripting.FileSystemObject")
Do Until Attesa.FileExists(OrigineAllegato) = True
If Attesa.FileExists(OrigineAllegato) = False Then ' Cerca l'Ordine appena convertito in PDF
Sleep (100) ' Se ancora non c'è, aspetta 100ms
Else
Exit Do ' Altrimenti prosegue
End If
Loop
Set Attesa = Nothing
Sleep (100)
Dummy= -1
Dummy= ShellExecute(0, "open", OrigineAllegato, vbNullString, vbNullString, 0)
Screen.MousePointer = vbNormal
Exit Sub
errore_cmdStampa_Click:
Screen.MousePointer = vbNormal
If Err.Number = 70 Then
MsgBox " Chiudere il File ''VenditePerCliente.pdf '' prima di procedere. "
Exit Sub
End If
Se però non genero il file .pdf e/o non lo istanzio per verificare se è già stato creato, posso ripetere quante volte voglio l'apertura del File senza che Adobe Reader mi dia messaggi di errore.
"StampaReportInPDF" chiama una procedura esterna che si chiude al suo termine e quindi non dovrebbe lasciare nulla di aperto.
Se necessario copierò anche questa procedura.
Intanto, qualcuno sa dirmi la ragioni dell'errore di Adobe?
Grazie