| | 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 | |
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 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 | |
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
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 | |
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
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 | |
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
[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 |
|
|