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

Rispondi quotando