Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Errore di esportazione comparso dal nulla

Ultimo Aggiornamento: 05/12/2018 16:49
Post: 179
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
30/11/2018 11:07

Ciao a tutti, é un bel pezzo che qui non mi faccio sentire ma siete stati tutti così bravi che sinceramente, nel mio piccolo, tutto ciò che mi avete fornito, ha funzionato egregiamente.
Almeno fino a qualche giorno fa quando un file Excel 2003 che usao da anni si é piantato nella esportazione con pdf creator.

Ho scaricato l'ultima versione di questo programma e settato la porta stampante su Ne00 come da VB.

E... niente.
Il caro Scossa.vr aveva elaborato il VB e davvero era perfetto.
Purtroppo non sono più riuscito a contattarlo e quindi mi rivolgo alla vostra attenzione per poter riuscire a capire e risolvere il tutto.
Allego il file come .zip e se riesco anche il codice.

Spero davvero che qualcuno mi possa aiutare in questo frangente.
Grazie e Buona giornata.
Max

Sub Macro2()
    'by scossa
  
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim P As String
    Dim N As String
    Dim sFile As String
    Dim j As Long
    Dim aLink As Variant
    Dim pdfjob As Object  ' PDFCreator.clsPDFCreator '
    Dim wsPdf As Worksheet
    Dim wbPdf As Workbook
    
    On Error GoTo err_exit
    Set wb = ThisWorkbook
    Set pdfjob = CreateObject("PDFCreator.clsPDFCreator") 'New PDFCreator.clsPDFCreator '
    If pdfjob Is Nothing Then
      Err.Raise Number:=vbObjectError + 513, _
        Description:="Errore stampante PDF"
    End If
    If pdfjob.cStart("/NoProcessingAtStartup") = False Then
      Err.Raise Number:=vbObjectError + 513, _
        Description:="Errore stampante PDF"
    End If
    
    Application.ScreenUpdating = False
    For j = 1 To wb.Worksheets.Count
        Set ws = wb.Worksheets(j)
        If ws.CodeName <> "Foglio1" Then
            P = wb.Path & "\"
           N = "Ordine " & ws.Name & " " & ws.Range("B22").Value
            'N = ws.Name & " " & ws.Range("B22").Value
        If j < wb.Worksheets.Count Then
          N = "" & N
        End If
          sFile = P & N
          If Dir(sFile & ".xls") <> "" Then
            If MsgBox("file " & sFile & " esiste già" & _
              vbCrLf & "sovrascrivo?", vbCritical + vbYesNo, _
                "ATTENZIONE") = vbNo Then
              Err.Raise Number:=vbObjectError + 513, _
                Description:="Esportazione abbandonata"
            Else
              'un motivo c'è per le due righe seguenti
              Application.ScreenUpdating = True
              Application.ScreenUpdating = False
            End If
          End If
          ws.Copy
          Set wbPdf = ActiveWorkbook
          Set wsPdf = wbPdf.ActiveSheet
          Application.DisplayAlerts = False
          aLink = wbPdf.LinkSources(Type:=xlLinkTypeExcelLinks)
          wbPdf.BreakLink aLink(1), xlLinkTypeExcelLinks
          wbPdf.SaveAs Filename:=sFile & ".xls"

          With pdfjob
            .cPrinterStop = False
            .cOpti0n("UseAutosave") = 1
            .cOpti0n("UseAutosaveDirectory") = 1
            .cOpti0n("AutosaveDirectory") = wb.Path
            .cOpti0n("AutosaveFilename") = N
            .cOpti0n("AutosaveFormat") = 0
            .cClearCache
                      
            Application.StatusBar = "stampa pdf: " & sFile & ".pdf"
            If wsPdf.Name = "3" Then
              Application.StatusBar = "stampa pdf: " & sFile & "a" & ".pdf"
              .cOpti0n("AutosaveFilename") = N & "a"
              wsPdf.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="PDFCreator su Ne00:" 'modificare all'occorenza
              Do Until .cCountOfPrintjobs = 1
                DoEvents
              Loop
              .cPrinterStop = False
        
              Do Until .cCountOfPrintjobs = 0
                DoEvents
              Loop
              .cOpti0n("AutosaveFilename") = N & "b"
              Application.StatusBar = "stampa pdf: " & sFile & "b" & ".pdf"
              wsPdf.PrintOut From:=2, To:=10000, Copies:=1, ActivePrinter:="PDFCreator su Ne00:" 'modificare all'occorenza
            Else
              wsPdf.PrintOut Copies:=1, ActivePrinter:="PDFCreator su Ne00:" 'modificare all'occorenza
            End If
            
            Do Until .cCountOfPrintjobs = 1
              DoEvents
            Loop
            .cPrinterStop = False
      
            Do Until .cCountOfPrintjobs = 0
              DoEvents
            Loop
            Set wsPdf = Nothing
            ActiveWorkbook.Close
            Application.DisplayAlerts = True
          End With
        End If
      Next
  
err_exit:
    Application.StatusBar = False
    pdfjob.cClose
    Set wb = Nothing
    Set ws = Nothing
    Set pdfjob = Nothing
   
    Application.ScreenUpdating = True
    If Err.Number <> 0 Then
      MsgBox Err.Description, vbCritical, "ERRORE"
    Else
      MsgBox "Creazione file .xls e .pdf eseguita", vbInformation, "OK"
    End If
  
  End Sub


[Modificato da by sal 30/11/2018 12:24]
EXCEL 2003
Post: 5.556
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
30/11/2018 12:32

Errore esportazione
Ciao Max, non ho più Excel2003, però dovresti vedere come ha configurato la stampante il nuovo PDFCreator che hai installato e cambiare

wsPdf.PrintOut From:=1, To:=1, Copies:=1, ActivePrinter:="PDFCreator su Ne00:" 'modificare all'occorenza


"PDFCreator su Ne00"

al suo posto inserirci il nuovo nome che ha assegnato.

ma può darsi che Scossa che Saluto, ti legga e ti risponda

Ciao By Sal [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 179
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
30/11/2018 14:16

Ottimo Sal
Ciao Carissimo,

L'errore é saltato fuori alla riga 104 del codice dove mi dice:

Errore di runtime "91"
Variabile oggetto o variabile del blocco With non impostata

Sinceramente non so cosa significhi.

Comunque la nuova stampante virtuale installata da pdf creator aveva in effetti una porta strana.
Io ho ricreato la Ne00 e adesso é su quella.

L'errore, però, é uscito prima dell'installazione della nuova versione e riguardava la mancanza o la non registrazione di MSCOMCTL.OCX.

Io ho verificato che ci fosse ed ho provveduto a riregistrarlo nella cartella corretta per Win7 64bit ma non é successo nulla.
L'errore era il RUNTIME ERROR 339

Di più non so.

Io potrei anche fare l'upgrade ad una versione superiore di excel ma ho paura che queste macro poi non vadano più bene e per quello sono rimasto con Excel 2003.

Spero davvero che tu o Scossa-vr o qualche altro amico su questo forum possa darmi una soluzione.

Senza quella routine devo fare tutta l'esportazione foglio per foglio su acrobat con il rischio di fare errori..

Un abbraccio Sal e grazie ancora per l'interessamento.
Max
EXCEL 2003
Post: 5.557
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
30/11/2018 15:50

Componente aggiuntivo MSCOMCTL.ocx
Ciao Max, se hai un sistema a 64bit dove hai registrato il componente aggiuntivo, in "System32", mi sembra che si debba registrarlo in "SysWOW64" per essere riconosciuto.

vedi prima se esiste tale cartella, in "C:\Windows\"

Ciao By Sal [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 180
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
01/12/2018 16:59

Ciao Sal,

si ho verificato prima di registrarlo in SysWOW e poi così ho fatto.
Registrazione andata a buon fine ma nulla di fatto.
Poi ho provveduto ad installare l'ultima versione e il problema di registrazione del file .OCX non si é più verificato ma in compenso é uscito l'errore in VB.
Per quello oltre al codice ho allegato il file, perchè é verificabile l'errore, compatibilmente al fatto di avere installato pdf Creator.

Come detto, io sono disponibile a migrare a un Excel superiore, semprechè possa continuare ad utilizzare questo tipo di file anche dopo con la medesima stabilità che ha dimostrato fino a pochi giorni fa.
E questo me lo deve dire qualcuno che mastichi il VB, proprio perchè io ignoro la programmazione, salvo poche nozioni autoapprese.
EXCEL 2003
Post: 5.559
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
01/12/2018 17:08

PdfCreator
Ciao Maxva, se passi ad un Excel superiore dal 10 in poi credo non mi ricordo se anche la 7.

esiste l'opzione che te lo riporta direttamente in PDF come da immagine.

carica immagini

ma anche da vba.

Ciao By Sal [SM=x423051]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 181
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
02/12/2018 11:04

Si, la cosa é interessante, ma io esporto tutti e 5 i fogli del file, ciascuno in un file .xls e .pdf e questo me lo faceva appunto il VBA di Scossa-vr.
Naturalmente se si riesce dare ordine a Excel di esportare i fogli singolarmente in xlsx e pdf la cosa sarebbe superata, fermo restando anche la possibilità di suddividere in files la parte contabile (pagina 1 di ciascun foglio) con la parte descrittiva (da pagina 2 all'ultima)ed esportarli così in pdf.
Come detto, temo che facendo l'upgrade, non funzionerebbero a dovere anche le altre macro in VBA e questo mi assassinerebbe il lavoro.
Ad esempio ho una macro (che si vede nel vba del file) che con un pulsante aggiunge o toglie righe in tutti i fogli e questo é utilissimo perchè in ogni ordine che processo, il numero di righe é diverso.
Se non funzionasse quella macro dovrei aggiungere una per una le righe in ciascun foglio con il rischio di sbagliarmi... sai che casino.. :-(
comunque grazie per l'input, sempre gradito.
Buona giornata.
Max
EXCEL 2003
Post: 182
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
04/12/2018 16:50

Ahimè, nessuno che sa darmi una mano con questo bug?
EXCEL 2003
Post: 5.561
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/12/2018 17:08

File pdf
Ciao Max, vorrei aiutarti ma non posso, non ho Excel2003, però dai un occhiata a questo post.

vedi questo post clicca su "in risposta al post di gigi..." per la macro


sostituisci

  If ActivePrinter <> s Then
        'stampo
    End If

    'ripristino la vecchia stampante
    ActivePrinter = s


con

 If ActivePrinter <> s Then
         'stampo
         ActiveSheet.PrintOut '<<====
    End If


Cosi vedi se almeno comincia a funzionare, poi vediamo il resto.

Ciao By Sal [SM=x423051]


[Modificato da by sal 04/12/2018 17:14]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 183
Registrato il: 09/06/2011
Città: COMO
Età: 70
Utente Junior
Excel 2003
OFFLINE
05/12/2018 16:49

Grazie Sal, ma non sono riuscito a trovare il post e poi quei comandi nella mia macro non ci sono..
Beh, so di essere ignorante a 1000 quindi ammetto che non ho trovato quanto suggerito per colpa mia.

Io potrei anche installare una versione superiore di excel da far convivere con questa ma poi il tutto potrebbe funzionare oppure andrebbe riscritto il codice?

Se il tutto funzionasse, diciamo, con excel 2013, poi potrei mandare in pensione il 2003....

Grazie.
Max
EXCEL 2003
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 19:10. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com