Problema con codice VBA che con sistema Mac non funziona

Francesco Capobianco 0 Punti di reputazione
2024-03-04T16:32:11.7066667+00:00

Salve a tutti, ho un problema con il seguente codice VBA (che via allego) che purtroppo con il mio Mac (uso excel 2019 per Mac) funziona a metà, nel senso che: riesce a creare la cartella sul desktop ma quando la apro è vuota, quindi manca il salvataggio dei fogli in formato PDF. Con sistema operativo Windows funziona a meraviglia. So che probabilmente il problema sta nella "sintassi" del codice ma, non riesco a capire come modificarlo affinchè funzioni. Grazie in anticipo delle risposte.

Sub SalvaPDF()

    Dim ws As Worksheet

    Dim savePath As String

    Dim fileFormat As String

       savePath = MacScript("return (path to desktop folder) as String") & "Prova" & Application.PathSeparator

     If Dir(savePath, vbDirectory) = "" Then

        MkDir MacScript("return POSIX path of (" & Chr(34) & savePath & Chr(34) & ")")

    End If

   

    Application.DisplayAlerts = False

    fileFormat = "PDF"

   

    For Each ws In ThisWorkbook.Worksheets

        ws.ExportAsFixedFormat Type:=xlTypePDF, FileName:=savePath & ws.Name & "." & fileFormat, Quality:=xlQualityStandard

    Next ws

   

    Application.DisplayAlerts = True

   

    MsgBox "Salvataggio completato!", vbInformation

End Sub

Office
Office
Una suite di software per la produttività Microsoft che supporta attività aziendali comuni, tra cui l'elaborazione di parole, la posta elettronica, le presentazioni e la gestione e l'analisi dei dati.
11 domande
0 commenti Nessun commento
{count} voti

2 risposte

Ordina per: Più utili
  1. Monica Caprio (Convergys International Europe) 640 Punti di reputazione Fornitore Microsoft
    2024-03-06T06:40:41.3233333+00:00

    Ciao Francesco!

    Il problema potrebbe derivare dalla gestione dei percorsi e dalla sintassi specifica richiesta da Excel per i sistemi operativi Mac. Ecco una versione modificata del tuo codice VBA che dovrebbe funzionare correttamente su Excel 2019 per Mac:

    Sub SalvaPDF()

    Dim ws As Worksheet
    
    Dim savePath As String
    
    Dim fileFormat As String
    
    ' Ottenere il percorso al desktop sul Mac
    
    savePath = MacScript("return (path to desktop folder as string)")
    
    ' Aggiungere il nome della cartella
    
    savePath = savePath & ":Prova:"
    
    ' Creare la cartella se non esiste
    
    On Error Resume Next
    
    MkDir savePath
    
    On Error GoTo 0
    
    ' Impostare il formato del file
    
    fileFormat = "PDF"
    
    ' Disabilitare gli avvisi durante il salvataggio
    
    Application.DisplayAlerts = False
    
    ' Ciclo attraverso tutti i fogli di lavoro e salvarli come PDF
    
    For Each ws In ThisWorkbook.Worksheets
    
        ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath & ws.Name & "." & fileFormat, Quality:=xlQualityStandard
    
    Next ws
    
    ' Riabilitare gli avvisi
    
    Application.DisplayAlerts = True
    
    ' Mostrare un messaggio di completamento
    
    MsgBox "Salvataggio completato!", vbInformation
    

    End Sub

    Le modifiche principali includono:

    1. Modifica della sintassi per ottenere il percorso al desktop su Mac.
    2. Aggiunta del separatore di percorso corretto per Mac (: invece di \).
    3. Modifica del percorso della cartella in modo che includa il nome della cartella Prova e il separatore di percorso appropriato per Mac.
    4. Aggiunta di gestione degli errori per evitare problemi se la cartella esiste già.

    Prova a eseguire questo codice sul tuo Mac e verifica se risolve il problema.

    Spero la mia risposta ti sia stata utile.

    Buona giornata.

    Monica.

    0 commenti Nessun commento

  2. Francesco Capobianco 0 Punti di reputazione
    2024-03-06T21:45:43.2666667+00:00

    Ciao Monica,

    intanto grazie per la risposta!

    Allora, il codice da te inviatomi, pur non dando nessun tipo di errore, purtroppo non funziona, in quanto non mi permette di creare la cartella sul desktop e tantomeno di salvare i fogli in formato PDF all'interno della stessa. Poiché non ho un PC con sistema Windows, no so se possa funzionare.

    Hai per caso una alternativa al tuo codice?

    Grazie

    Francesco

    0 commenti Nessun commento