Salvataggio file excel come PDF tramite pulsante

Anonimo
2012-10-23T09:56:31+00:00

Salve a tutti!

Avrei gentilmente bisogno di associare un'azione ad un pulsante creato in un foglio excel in modo tale che premendo il pulsante il sistema in automatico mi prenda tutte le celle dove c'è scritto qualcosa e me li salvi in un percorso prestabilito nella mia rete ma in formato PDF.

Il tutto magari tramite VBA

In attesa Vi ringrazio in anticipo

Massimo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2012-10-23T11:19:12+00:00

Sub SalvaInPDF()

    Const cPath  As String = "c:"

    Dim varNomeFile As Variant

    varNomeFile = Application.InputBox(Prompt:="Scrivi il nome del file PDF", _

        Title:="Nome dal file PDF da salvare", _

        Type:=2)

    If varNomeFile = False Then Exit Sub

    If Len(varNomeFile & vbNullString) = 0 Then Exit Sub

    ActiveSheet.ExportAsFixedFormat _

        Type:=xlTypePDF, _

        Filename:=cPath & varNomeFile, _

        Quality:=xlQualityStandard, _

        OpenAfterPublish:=False

End Sub


Devi solo decidere cosa succede se non scrivi nulla nella InputBox. Nel codice ho stabilito che la procedura esca senza fare altro. Potresti eventualmente assegnare un nome di default al file.

David

La risposta è stata utile?

2 persone hanno trovato utile questa risposta.
0 commenti Nessun commento

51 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-03-01T15:40:46+00:00

    Ho confrontato i testi della macro (quello ricavato dal file e quello citato nella tua risposta. Non sono perfettamente uguali:

    in uno c'è la riga:

    .Printgridlines = True

    nell'altro:

    .Printgridlines = False

    qual'è la riga esatta prima che ricominci a provare?

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-03-01T12:49:28+00:00

    Ciao Gimart,

    Mah, che vuoi che ti dica. Forse funziona perchè sono poche colonne e non ci sono celle vuote.

    Per il mio file di esempio, ho stampato tre pagine su un solo foglio A4. A meno che non si tratta di tanti fogli che un singolo foglio sarebbe illeggibile., non credo che il numero di fogli o la presenza di celle vuote abbia alcuna rilevanza. Per verificare questo, non sarebbe sufficiente semplicemente  aumentare la quantità di dati e aggiungere alcuni celle vuote al mio file? 

    Quando avrò un pò di tempo riprovo. Intanto, non è che mi invieresti via mail il testo completo e preciso della macro come file .doc?

    La mia email è: *** L'indirizzo di posta elettronica viene rimosso per motivi di privacy ***.

    Per quanto riguarda il codice, basterebbe scaricare il file per vederlo!

    Tuttavia, il codice è:

    '=========>>

    Option Explicit

    '--------->.

    Public Sub SalvaInPDF_2()

        Dim sPath As String, sStr As String

        Dim varNomeFile As Variant

        Const cPath As String = "**C:\Users\NDJ\Documents**"         '<<==== Modifica

        On Error GoTo ErrHandler

        With Application

            sStr = .PathSeparator

            If Right(cPath, 1) = sStr Then

                sPath = cPath

            Else

                sPath = cPath & sStr

            End If

        End With

        varNomeFile = Application.InputBox(Prompt:="Scrivi il nome del file PDF", _

                                           Title:="Nome dal file PDF da salvare", _

                                           Type:=2)

        If varNomeFile = False Or varNomeFile = 0 Then

            Exit Sub

        End If

        With ActiveSheet

            With .PageSetup

                .PaperSize = xlPaperA4

                .PrintGridlines = True

                .Zoom = False

                .FitToPagesWide = 1

                .FitToPagesTall = 1

            End With

            On Error GoTo ErrHandler:

            .ExportAsFixedFormat _

                    Type:=xlTypePDF, _

                    Filename:=sPath & varNomeFile, _

                    Quality:=xlQualityStandard, _

                    OpenAfterPublish:=False

        End With

        Exit Sub

    ErrHandler:

        Call MsgBox(Prompt:="Errore " _

                          & Err.Number _

                          & " (" _

                          & Err.Description _

                          & ") nella routine: SalvaInPDF_1", _

                    Buttons:=vbCritical, _

                    Title:="ERRORE")

    End Sub

    '<<=========

    A proposito, non è una buona idea di pubblicare il tuo indirizzo e-mail su un sito pubblico! Questo è il motivo per cui l'indirizzo è stato soppresso.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-03-01T12:26:47+00:00

    Mah, che vuoi che ti dica. Forse funziona perchè sono poche colonne e non ci sono celle vuote. Quando avrò un pò di tempo riprovo. Intanto, non è che mi invieresti via mail il testo completo e preciso della macro come file .doc?

    La mia email è: ******@fastwebnet.it.

    Grazie per il tempo che mi hai dedicato

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-03-01T12:25:05+00:00

    Ciao Gimart,

    Per quanto riguarda il file che avevo caricato su OneDrive, sostituisci la riga di codice:

              .PrintGridlines = False

    con:

    .PrintGridlines =True

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento