Stampa su file



  • Stampa su file
    di Rino (utente non iscritto) data: 03/08/2012

    Buonasera, ho un problema che non riesco a risolvere ho un file su cui ci sono 2 fogli su uno c'è il db con 400 record, su l'altro c'è la scheda riepilogativa. ho scritto una macro con cui riesco a far stampare ciclicamente tutte e 400 le schede. ma adesso invece mi serve salvare le 400 schede col nome del intestatario, ho installato come stampante virtuale per creare pdf sia
    "pdf-xchange 4.0 for abbyy" che "pdfcreator" col primo non si prende il nome in automatico mi chiede sempre di immetterlo manualmente con pdfcreator invece me lo salva in un formato differente da pdf.
    per favore se qualcuno mi può aiutare a risolvere il dilemma. vi ringrazio anticipatamente rino



  • di Vecchio frac data: 04/08/2012

    Non conosco pdf-xchange 4.0 for abbyy quindi non posso aiutarti su questo, ma se espone il modello "com" credo che ci sia la possibilità di impostare il nome per il salvataggio del pdf.
    uso invece regolarmente pdf creator con successo.

    mostrami il pezzo di codice che usi per lanciare la stampa virtuale su pdf.

    comunque devo guardare con calma i miei modelli.
    butto qui questo messaggio interlocutorio perchè non sembri che la tua richiesta sia caduta nel vuoto :)





  • di Vecchio frac data: 04/08/2012

    Assumendo che tu stai utilizzando windows, se hai installato pdf creator, nella sua sottocartella "com" (cerca pdfcreator in c:programmi con esplora risorse) troverai un esempio relativo a excel, sotto msoffice. il file ha estensione .frm; è un codice d'esempio naturalmente che dovrai adatatre ai tuoi scopi. comunque per provarlo va benissimo. apri un file di excel vuoto, nell'editor di codice importa questo file (è una userform) e lancialo. ti consentirà di unire tutti i fogli della cartella di lavoro in un unico pdf, oppure (a scelta) di creare il file pdf solo del foglio corrente. ripeto, per fare la prova che tutto vada a buon fine è più che sufficiente.
    in caso di esito positivo, ti basta enucleare il codice che ti serve e riprodurlo nel tuo foglio, associandolo ad un pulsante per lanciare la creazione del pdf del foglio che ti interessa.

    qui a casa non ho pdf creator installato quindi non posso provarlo, ma se hai ancora difficoltà scrivi pure.





  • di Rino (utente non iscritto) data: 04/08/2012 19:52:56

    Ciao Vecchio Frac e grazie per il tempo che mi stai dedicando, ho provato a importare il file FRM per excel ma quando lo lancio con F5 mi da errore di compilazione alla riga
    Private WithEvents PDFCreator1 As PDFCreator.clsPDFCreator
    io uso Office 2010.

    per adesso ho risolto il problema di salvare i file in formato xls ma devo riuscire a salvarli in PDF sia perchè sono più difficile da modificare e tutti aprono il PDF a differenza di XLS perchè non tutti hanno installato office.

    se vuoi ti posso mandare il file per intero sulla tua posta
    ti ringrazio Rino



  • di Vecchio frac data: 04/08/2012

    Così, a occhio e croce, direi che non hai agigunto tra i riferimenti "pdfcreator". nel mio excel 2003, nell'editor del codice, basta andare su strumenti -> riferimenti, in excel 2010 non saprei ma non dovrebbe essere molto differente.
    il riferimento è essenziale per poter fruire dei vantaggi dell'intellisense (l'elenco dei metodi e delle proprietà di un oggetto che appaiono quando digiti il punto ".").
    otteresti un risultato analogo con l'associazione tardiva, mediante createobject, ma c'è bisogno di conoscere il nome della classe registrata (qualcosa tipo "pdfcreator.pdfcreator", adesso vedo di documentarmi meglio).

    se vuoi puoi inviarmi il file, ma non credo di riuscire a farci molto, senza pdf creator installato qui :)

    vecchio_frac@hotmail.com





  • di Vecchio frac data: 04/08/2012

    Che poi, mi sembrava che i nuovi excel avessero il supporto nativo a pdf.
    direttamente o mediante add-on.
    in tal caso una linea di codice come quella che riporto dovrebbe risolvere il problema, salvo prove per tentativi :)

    la mia fonte è msdn, non posso riportare il link alla pagina a causa della misura antispam. il codice dell'articolo comunque è ee834871(v=office.11), puoi provare a cercarlo con google.

    comunque il passo importante è questo: "a feature of microsoft excel 2007 (with the 2007 microsoft office system service pack 2 installed) is the ability to create and send acrobat reader pdf files.

    note:

    if you have not already done this, you can install the 2007 microsoft office system service pack 2.

    if you do not want to install the 2007 microsoft office system service pack 2, you can install the save as pdf add-in that enables you to export and save files to the pdf format that is used in most 2007 microsoft office system applications. the add-in also enables you to send files as e-mail attachments in the pdf format in a subset of these applications. download the save as pdf add-in for the 2007 microsoft office system."
     
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=MyPathExtended & "" & strPdfName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False





  • stampa su file
    di Rino (utente non iscritto) data: 04/08/2012 23:22:08

    Ciao vecchio frac ho risolto senza ricorrere a programmi esterni tipo PDFCREATOR ma solo a codice VBA, che ti allego.
    Ti ringrazio per la cortesia e la celerità con cui mi hai risposto. Alla prossima
    Rino
     
    Range("F6:H40").Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:Documents and SettingsaxseDesktopCONTATTI
    CONTI	est.pdf", _
    Quality:=xlQualityStandard,
    IncludeDocProperties:=True, IgnorePrintAreas _
    :=False, OpenAfterPublish:=True
    End Sub



  • di Vecchio frac data: 05/08/2012

    Grazie a te per il feedback e la conferma alla mia ricerca, non potevo provarlo sul campo ma l'intuizione era giusta ;)
    che bella cosa questa dell'integrazione del pdf in office, a me ti dirò manca abbastanza, mi risolverebbe qualche problema soprattutto in access. ma ci si arrangia come si può ^_^

    in ogni caso questa soluzione va bene se il tuo modello gira sempre solo su excel fornito di supporto pdf, altrimenti ovviamente no. in tal caso devi aver pronta la soluzione alternativa... ti consiglierei di smanettare comunque con pdf creator via codice, anche per aggiungere un frammento di conoscenze al tuo bagaglio :)





  • di Vecchio frac data: 05/08/2012

    Grazie a te per il feedback e la conferma alla mia ricerca, non potevo provarlo sul campo ma l'intuizione era giusta ;)
    che bella cosa questa dell'integrazione del pdf in office, a me ti dirò manca abbastanza, mi risolverebbe qualche problema soprattutto in access. ma ci si arrangia come si può ^_^

    in ogni caso questa soluzione va bene se il tuo modello gira sempre solo su excel fornito di supporto pdf, altrimenti ovviamente no. in tal caso devi aver pronta la soluzione alternativa... ti consiglierei di smanettare comunque con pdf creator via codice, anche per aggiungere un frammento di conoscenze al tuo bagaglio :)





  • di Harrybosch data: 06/08/2012

    Ciao rino e ciao francesco
    un pò in ritardo, se non vi dispiace, mi intrometto anch'io nella discussione.
    in effetti dalla versione 2007 di office, come del resto avete già detto, esiste già un convertitore proprio per trasformare i file in pdf, senza ricorrere a programmi alternativi.

    siccome all'inizio rino chiedeva la possibilità di stampare ben 400 schede volevo integrare con un paio di codici per quanti fossero interessati a due varianti:

    - con il primo codice viene pubblicato un pdf per ogni foglio contenuto all'interno della cartella; ogni pdf assumerà il nome del relativo foglio

    - con il secondo codice invece si crea invece un pdf unico che raccoglie uno dopo l'altro tutti i fogli della cartella; il pdf assumerà il nome della cartella

    note: ovviamente il percorso va modificato in base alla directory del proprio pc

    vista l'ora (tarda) non ho messo i commenti, ma se qualcuno fosse interessato vedo di dedicare un attimo di tempo

    ciao, vanni
     
    'per stampare un pdf per ogni foglio con il nome del foglio stesso
    Sub pdf_ogni_foglio()
    
        Dim foglio As Worksheet
        percorso = "C:UsersDesktopstampe"
        
        For Each foglio In Worksheets
            nomefoglio = foglio.Name
            foglio.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomefoglio & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=False
        Next
    End Sub
    
    
    'per stampare tutti i fogli su un unico pdf
    Sub pdf_unico()
        Dim foglio As Variant
        foglio = Array()
        For i = 1 To Sheets.Count
            ReDim Preserve foglio(i - 1)
            foglio(i - 1) = Sheets(i).Name
        Next i
        nomecartella = ActiveWorkbook.Name
        percorso = "C:UsersDesktopstampe"
    
        Sheets(foglio).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomecartella & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
    End Sub
    


  • Stampa su file
    di Rino (utente non iscritto) data: 06/08/2012 15:17:08

    Ciao Harrybosch
    lavoro in un ufficio di 1300 impiegati di questi fanno straordinario circa 6-700.
    in un file XLS costituito da due fogli su uno ho un DB formato da nominativo, CF, qualifica, aliquota straordinario diurno, ore diurne, aliquota straordinario notturne o festive, ore notturne o festive, aliquota straordinario notturne festive, ore notturne festive, totale da pagare sul secondo foglio ho costruito una scheda che immettendo il nominativo in una cella richiama tutti i dati (cerca verticale).
    per la stampa su carta gli faccio scorrere uno ad uno tutte le righe. La stessa cosa per il salvataggio in PDF.
    Comunque ti ringrazio e mi copio e mi conservo le tue routine che sicuramente mi verranno in aiuto.
    Saluti Rino



  • di Vecchio frac data: 06/08/2012

    Vanni, dammi una mano a capire il codice... è proprio necessario tutto quel giro con "foglio" e il "redim preserve"?
    non basterebbe qualcosa come il pezzo di codice qui sotto?
    giusto per capire. grazie

     
    Sub pdf_unico()
    
        percorso = "C:UsersDesktopstampe"
        nomecartella = ActiveWorkbook.Name
    
        ThisWorkbook.Sheets.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=percorso & nomecartella & ".pdf", _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
    
    End Sub
    
    






  • di Harrybosch data: 06/08/2012

    Ciao francesco
    ho provato a inserire la tua idea, che ovviamente snellirebbe parecchio il codice. però mi restituisce errore, esattamente come ti riporto:

    errore di compilazione
    impossibile trovare il metodo o il membro dei dati

    per creare il codice sono partito dal registratore, il quale mi ha restituito la creazione dell'array, del tipo:
    sheets(array("foglio1", "foglio2", ...)).select

    pertanto ho pensato di crearmi un array che contasse tutti i fogli presenti (che in principio non so quanti sono, ed ecco che uso il redim), li memorizzasse in "foglio" e quindi selezionarlo per assegnarlo al metodo
    .exportasfixedformat
    che è quello che crea il debug se gli assegno direttamente l'intera cartella

    non so se ci sia una strada più agevole ma proverò a smanettare un pò per verificare.
    ciaooo




  • di Vecchio frac data: 06/08/2012

    Probabilmente thisworkbook.sheets non espone exportasfixedformat come pensavo.
    fammi una cortesia, prova il codice qui sotto e dimmi cosa ottieni :)
    il concetto è che thisworkbook.sheets.select dovrebbe di suo selezionare tutit i fogli della cartella; l'istruzione successiva deve esportarli in un unico pdf.
     
    ThisWorkbook.Sheets.Select
    Selection.ExportAsFixedFormat ...(ecc. con gli altri parametri)






  • di Harrybosch data: 06/08/2012

    Allora, se inserisco come mi hai proposto, ovvero:

    thisworkbook.sheets.select
    selection.exportasfixedformat ....
    ....
    succede che mi pubblica il pdf di tutti i fogli ma solo della cella che avevo attiva in quel momento! tipo la a1 di ogni foglio...
    a patto di non selezionare inizialmente un foglio intero e allora li pubblica per interi

    ma basta cambiare in

    thisworkbook.sheets.select
    activesheet.exportasfixedformat .....

    che ti pubblica esattamente tutti i fogli senza passare dall'array...
    perfetto! ancora una volta grazie per la giusta indicazione!

    pertanto riporto il codice finale per ottenere il pdf unico con tutti i fogli della cartella:
     
    Sub pdf_unico()
        
        nomecartella = ActiveWorkbook.Name
        percorso = "C:UsersDesktopstampe"
    
    
        ThisWorkbook.Sheets.Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                        Filename:=percorso & nomecartella & ".pdf", _
                                        Quality:=xlQualityStandard, _
                                        IncludeDocProperties:=True, _
                                        IgnorePrintAreas:=False, _
                                        OpenAfterPublish:=True
    End Sub