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-01-20T06:23:44+00:00

    Ciao Gimart,

    Chiedo scusa se mi introduco nella discussione, ma l'argomento mi interessa. Ho provato a creare la macro come sopra indicato, ma mi compare il messaggio "Errore di run-time '1004': documento non salvato. E' possibile che il file sia aperto ecc,".

    Dov'è che sbaglio? Grazie

    Prova quanto precedentemente suggerito a David, cioè:

    Al fine di indagare il problema, prova a sostituire temporaneamente

    ActiveSheet.ExportAsFixedFormat _

    Type:=xlTypePDF, _

    Filename:=cPath & varNomeFile, _

    Quality:=xlQualityStandard, _

    OpenAfterPublish:=False

    con:

    MsgBox "Percorso = " & cPath & vbNewLine & "Nome del file = " & varNomeFile

      ActiveSheet.ExportAsFixedFormat _

                Type:=xlTypePDF, _

                Filename:=cPath & varNomeFile, _

                Quality:=xlQualityStandard, _

                OpenAfterPublish:=False

     Incolla il messaggio risultante nella tua risposta qui.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-01-20T04:59:43+00:00

    Ciao David,

    Errore di run-time '1004':

    Documento non salvato. é possibile che il documento sia aperto o che

    si sia verificato un errore durante il salvataggio

    Al fine di indagare il problema, prova a sostituire temporaneamente

    ActiveSheet.ExportAsFixedFormat _

    Type:=xlTypePDF, _

    Filename:=cPath & varNomeFile, _

    Quality:=xlQualityStandard, _

    OpenAfterPublish:=False

    con:

    MsgBox "Percorso = " & cPath & vbNewLine & "Nome del file = " & varNomeFile

        ActiveSheet.ExportAsFixedFormat _

                Type:=xlTypePDF, _

                Filename:=cPath & varNomeFile, _

                Quality:=xlQualityStandard, _

                OpenAfterPublish:=False

     Incolla il messaggio risultante nella tua risposta qui.

    ===

    Regards,

    Norman

    Chiedo scusa se mi introduco nella discussione, ma l'argomento mi interessa. Ho provato a creare la macro come sopra indicato, ma mi compare il messaggio "Errore di run-time '1004': documento non salvato. E' possibile che il file sia aperto ecc,".

    Dov'è che sbaglio? Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-01-13T11:02:42+00:00

    Ciao David,

    Come approcchio diverso, anziche' utilizzare la seconda InputBox, potresti provare qualcosa del genere:

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

    Option Explicit

    Public Sub SalvaInPDF()

        Dim cPath As String

        Dim varNomeFile As Variant

        cPath = BrowseFolder("Seleziona una cartella", _

                             "C:", msoFileDialogViewList)

        If cPath = vbNullString Then

            Call MsgBox(Prompt:="Hai cancellato la selezione della cartella!", _

                        Buttons:=vbOKOnly + vbInformation, _

                        Title:="Uscendo!")

            Exit Sub

        End If

        If Right(cPath, 1) <> Application.PathSeparator Then

            cPath = cPath & Application.PathSeparator

        End If

        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

    '--------->>

    Public Function BrowseFolder(Title As String, _

                                 Optional InitialFolder As String = vbNullString, _

                                 Optional InitialView As Office.MsoFileDialogView = _

                                 msoFileDialogViewList) As String

        '\ : http://www.cpearson.com/excel/browsefolder.aspx

        Dim V As Variant

        Dim InitFolder As String

        With Application.FileDialog(msoFileDialogFolderPicker)

            .Title = Title

            .InitialView = InitialView

            If Len(InitialFolder) > 0 Then

                If Dir(InitialFolder, vbDirectory) <> vbNullString Then

                    InitFolder = InitialFolder

                    If Right(InitFolder, 1) <> "" Then

                        InitFolder = InitFolder & ""

                    End If

                    .InitialFileName = InitFolder

                End If

            End If

            .Show

            On Error Resume Next

            Err.Clear

            V = .SelectedItems(1)

            If Err.Number <> 0 Then

                V = vbNullString

            End If

        End With

        BrowseFolder = CStr(V)

    End Function

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

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-01-13T10:31:28+00:00

    Ciao David,

    Potresti usare una seconda dell'InputBox per il percorso o potresti modificare il messaggio dell'InputBox per richiedere il percorso e il nome del file.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento