Stampa PDF o Salva



  • Stampa PDF o Salva
    di paganiva (utente non iscritto) data: 26/01/2016 21:31:14

    Buonasera
    Torno con un argomento trattato più volte.
    La mia necessità nasce dalla mia totale ignorananza e conoscenza del VBA:
    Scopiazzo a destra e manca diversi codici, cercando di adattarli alle mie necessità, a molte, molto raramente ci
    riesco, spesso no.
    Mi domando, non è possibile creare macro semi universali, specialmente nel caso in cui si tratti di salvataggi o collegamenti con directory (path). Una sorta di codice dinamico utilizzabile sempre per salvare o stampare un foglio excel come o in PDF
    Mi spiego, rendere dinamico, nel mio caso il salvataggio di un foglio excel, in PDF.
    Il passo successivo sarebbe quello di poter disporre di una opzione se salvare o stampare il file in pdf.
    Il codice base (copiato funzionante, ma adesso a causa delle mie modifiche non più) è questo.
    Scopo, con le variabili rendere adattabile il codice a tutti i fogli e path che uno susa.
    Non so se mi sono spiegato
     
    Sub SalvaPDF_Stampa()
         Dim sPath As String
         Dim sNome As String
         Dim Ling As String
         Dim ws As Worksheet
    Set ws = ActiveSheet
    Ling = ActiveSheet.Name
         Application.DisplayAlerts = False
         'On Error Resume Next
       ActiveSheet.Select
        With Selection
            sPath = .Path
            With .ws
                sNome = Ling
                .ExportAsFixedFormat _
                     Type:=xlTypePDF, _
                     Filename:=sPath & "" & sNome & ".pdf", _
                     Quality:=xlQualityStandard, _
                     IncludeDocProperties:=True, _
                     IgnorePrintAreas:=False, _
                     OpenAfterPublish:=False
                     MsgBox "File " & sPath & "" & sNome & "   salvato", vbInformation, ".PDF "
            End With
            Exit Sub
        End With
        Application.DisplayAlerts = True
       ws = Nothing
    End Sub



  • di patel data: 27/01/2016 09:08:20

    per riassumere, tu vuoi esportare in pdf il foglio selezionato e vuoi scegliere il nome e la cartella di destinazione ?





  • di paganiva (utente non iscritto) data: 27/01/2016 16:03:51

    Patel chiede:
    per riassumere, tu vuoi esportare in pdf il foglio selezionato e vuoi scegliere il nome e la cartella di destinazione ?

    paganiva risponde

    Si voglio esportare il foglio attivo in pdf e salvarlo con lo stesso nome della linguetta.
    In pratica o un file composto da vari fogli e vorrei per ognuno di essi poterlo salvare separatamente.
    La stessa cosa dovrebbe essere possibile anche per stamparli come .pdf
    Con una form inserendo due optionButton o due CommandButton (Stampa o Salva).
    Le macro dovrebbero essere però universali, cioè funzionanti su tutti i fogli, impostando la variabile ws in modo che, in maniera autonoma e dinamica, riconosca il foglio di lavoro e lo salvi o stampi in base alla scelta effettuata
    allego file abbrocciato
    Ciao e grazie








  • di patel data: 27/01/2016 16:54:17

    hai intenzione di mettere i pulsanti su tutti i fogli ?





  • di paganiva (utente non iscritto) data: 27/01/2016 19:37:48

    Ciao patel
    no, ma credo che almeno il commandButton che apre la form, sia gioco forza inserirlo nei fogli.
    saluti e grazie



  • di patel data: 27/01/2016 20:25:56

    prova questa per il PDF
     
    Private Sub OptionButton2_Click()
      strFilePath = "F:Download" ' <<<<<<<<< da modificare
      strPdfName = ActiveSheet.Name
      ActiveSheet.Copy
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePath & strPdfName, _
      Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
      ActiveWorkbook.Close (False)
    End Sub






  • di paganiva (utente non iscritto) data: 27/01/2016 22:04:46

    Saluti patel
    Il codice postato, fa la copia del foglio ma in fase di salvataggio lo nomina cartella1 e non foglio1.
    Almeno credo di aver fatto tutto come suggerito.
    Ciao

    Allego file



  • di patel data: 28/01/2016 08:00:18

    io ho rinominato il Foglio1 come pippo ed esce il file pippo.pdf, utilizzo la seconda opzione del form.
    Non è ben chiara per me la tua distinzione tra salva e stampa, per me stampare in pdf significa creare un file pdf






  • di paganiva (utente non iscritto) data: 28/01/2016 14:55:29

    Saluti patel
    Come hai segnalto il tuo codice funaziona.
    Per stampa intendevo poter stampare il foglio in formato .pdf
    Per salva, intendevo la possibilità di salvare il foglio in .pdf senza stamparlo.
    Ho adottato la soluzione con form e due CommandBotton invece di OptionButton.
    Grazie delle dritte, alla prossima.

     
    Private Sub CommandButton1_Click()
    'STAMPA
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Set xFogliostampa = ws '< nome foglio da adattare
    ' stampo il foglio
    xFogliostampa.PrintOut
    Set xFogliostampa = Nothing
    End Sub
    
    Private Sub CommandButton2_Click()
    Dim sPath As String
         Dim sNome As String
         Dim ws As Worksheet
    Set ws = ActiveSheet
         Application.DisplayAlerts = False
         'On Error Resume Next
        With ThisWorkbook
            sPath = .Path
            With ws
            ' nome foglio attivo da salvare
                sNome = ws.Name
                .ExportAsFixedFormat _
                     Type:=xlTypePDF, _
                     Filename:=sPath & "" & sNome & ".pdf", _
                     Quality:=xlQualityStandard, _
                     IncludeDocProperties:=True, _
                     IgnorePrintAreas:=False, _
                     OpenAfterPublish:=False
                     MsgBox "File " & sPath & "" & sNome & "   salvato", vbInformation, " PDF "
            End With
            Exit Sub
        End With
        Set ws = Nothing
        Application.DisplayAlerts = True
    End Sub
    
    Private Sub OptionButton1_Click()
    ' stampa
    End Sub
    
    Private Sub OptionButton2_Click()
    'salva
    Dim strfilePath As String
      strfilePath = "C:UsersPippoDesktop" ' <<<<<<<<< da modificare
      'strFilePath = [P1]
      strPdfName = ActiveSheet.Name
      ActiveSheet.Copy
      ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strfilePath & strPdfName, _
      Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
      OpenAfterPublish:=False
      ActiveWorkbook.Close (False)