Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Rickycast
    Registrato dal
    Apr 2007
    residenza
    CHIERI (TO)
    Messaggi
    263

    VB6 - Ancora su "Chiudere un File.pdf" già aperto il 10/11/2014

    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

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Quote Originariamente inviata da Rickycast Visualizza il messaggio
    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
    Io resto dell'idea che se chiudi tu il process e lo riapri.. fai prima e sei sicuro che funziona...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.