Sviluppare funzionalita su Microsoft Office con VBA Salvataggio di un PDF anche con la data oltre con il nome e cognome.

Login Registrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #33193 Score: 0 | Risposta

    mflauto
    Partecipante
      1 pt

      Buongiorno a tutti,

      ho fatto una piccola routine per il salvataggio di un PDF con il nome che prende  dalla cella B18, la mansione che prende dalla cella D18, ora vorrei che mi salvasse il PDF anche con la data che recupera dalla cella H4, ho sicuramente sbagliato qualcosa nel codice; inoltre vorrei che mi salvasse direttamente in una cartella predefinita senza che ogni volta io debba indicare il percorso.

      Grazie a tutti, 

      in allegato il file di esempio.

      Massimiliano

      Sub Saveaspdfandsend()
      Dim xSht As Worksheet
      Dim xFileDlg As FileDialog
      Dim xFolder As String
      Dim xYesorNo As Integer
      Dim xOutlookObj As Object
      Dim xEmailObj As Object
      Dim xUsedRng As Range
      Dim X As String
      Dim Y As String
      Dim Z As Date
      
      X = Range("B18").Value
      Y = Range("D18").Value
      Z = Range("H4").Value
      
      Set xSht = ActiveSheet
      Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
      
      If xFileDlg.Show = True Then
         xFolder = xFileDlg.SelectedItems(1)
         
      Else
         MsgBox "You must specify a folder to save the PDF into." & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Must Specify Destination Folder"
         Exit Sub
      End If
      
       xFolder = xFolder + "\" + X + Z + ".pdf" ' vorrei aggiungere anche la data che si trova nella cella H4
      'Check if file already exist
      If Len(Dir(xFolder)) > 0 Then
          xYesorNo = MsgBox(xFolder & " already exists." & vbCrLf & vbCrLf & "Do you want to overwrite it?", _
                            vbYesNo + vbQuestion, "File Exists")
          On Error Resume Next
          If xYesorNo = vbYes Then
              Kill xFolder
          Else
              MsgBox "if you don't overwrite the existing PDF, I can't continue." _
                          & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Exiting Macro"
              Exit Sub
          End If
          If Err.Number <> 0 Then
              MsgBox "Unable to delete existing file.  Please make sure the file is not open or write protected." _
                          & vbCrLf & vbCrLf & "Press OK to exit this macro.", vbCritical, "Unable to Delete File"
              Exit Sub
          End If
      End If
       
      Set xUsedRng = xSht.UsedRange
      If Application.WorksheetFunction.CountA(xUsedRng.Cells) <> 0 Then
          'Save as PDF file
          xSht.ExportAsFixedFormat Type:=xlTypePDF, Filename:=xFolder, Quality:=xlQualityStandard
        End If
         
      End Sub
      
      

       

      Allegati:
      You must be logged in to view attached files.
      #33196 Score: 1 | Risposta

      rollis13
      Partecipante
        8 pts
        xFolder = xFolder + "\" + X + Z + ".pdf"

        Non puoi 'passare' la variabile Z così com'è, la data contiene il carattere / non ammesso nei nomi dei file.

        Devi convertire la / in - (o anche niente) prima che la Z arrivi alla riga di codice, per esempio:

        Z = Replace(Range("H4").Value, "/", "-")

        Qui invece del second xFolder ci metti il percorso fisso e disattivi le precedenti 6 righe di codice (quelle dove chiedi il percorso e lo verifica).

        xFolder = xFolder + "\" + X + Z + ".pdf"
        #33197 Score: 0 | Risposta

        mflauto
        Partecipante
          1 pt

          Ho fatto come mi hai detto,

          ho cambiato anche la variabile Z da Date a String, altrimenti non funzionava.

          Grazie per il suggerimento!

          Sub Saveaspdfandsend()
          Dim xSht As Worksheet
          Dim xFileDlg As FileDialog
          Dim xFolder As String
          Dim xYesorNo As Integer
          Dim xOutlookObj As Object
          Dim xEmailObj As Object
          Dim xUsedRng As Range
          Dim X As String
          Dim Y As String
          Dim Z As String
          
          Z = Replace(Range("H4").Value, "/", "-")
          X = Range("B18").Value
          Y = Range("D18").Value
          
          
          
          
          Set xSht = ActiveSheet
          Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
          
          
          xFolder = ("\\xxx-xxx-xxx\PDF Inviati") + "\" + X + Z + ".pdf"

           

          #33198 Score: 1 | Risposta

          rollis13
          Partecipante
            8 pts

            mflauto ha scritto:

            ho fatto una piccola routine per il salvataggio

            Scusa, ma visto che hai scritto questo pensavo che ti bastasse solo una spintarella. Allora intendevi "ho messo insieme questo codice alla buona".

            Ho aggiornato il mio post precedente.

            #33199 Score: 0 | Risposta

            rollis13
            Partecipante
              8 pts

              Ma hai indicato un valido percorso (fisso) esistente ? perché a me non da problemi.

              #33200 Score: 0 | Risposta

              mflauto
              Partecipante
                1 pt

                Grazie Karma,

                avevo dimenticato di cambiare la variabile "Z" da Date a String 🙂

                #33206 Score: 0 | Risposta

                rollis13
                Partecipante
                  8 pts

                  In effetti, devi aver scambiato le versioni perché nel primo file che hai allegato Z già era impostata String, tant'è vero che non mi fa dato problemi con la conversione.

                  Grazie del riscontro positivo .

                Login Registrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Salvataggio di un PDF anche con la data oltre con il nome e cognome.
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni: