Risultati da 1 a 7 di 7

Discussione: Salva pdf di un range di celle - office Mac



  1. #1
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1

    Salva pdf di un range di celle - office Mac

    Rieccomi...altra cosa banale, ma d'altronde mentre si impara le domande all'inizio son sempre banali!

    Tempo addietro avevo fatto una macro che mi salvava in pdf un foglio in una directory che volevo io. Ricordo che sono su Mac, quindi il Save as pdf è un poco diverso dal Win...

    Ora devo fare la stessa cosa però voglio salvare solo un determinato range di celle: ci ho provato 142 volte ma niente...o mi salva tutto il foglio o non mi salva niente. Allora ho provato con registra macro per vedere cosa faceva, e più o meno sono riuscito ad ottenere quello che mi interessa...tranne una cosa: nella macro registrata, avevo salvato il pdf sulla scrivania ma non riesco a capire dove inserire il percorso che voglio io! Ho provato con activebook.saveas filename:=xxx/xxx ma mi salva un file sia sulla scrivania (che funziona) sia un file nella directory che dico io ma vuoto/corrotto.

    Posto i codici...

    Questo quello che funziona e mi salva il pdf sulla scrivania (intervallo 1, 2 e 3 son solo per vedere la stampa di 1, 2 o 3 pagine...) ma da cui non vedo dove modificare la directory di salvataggio...

    Codice: 
    Sub Macro()Dim intervallo1 As Range, intervallo2 As Range, intervallo3 As Range
    
    
    Set intervallo1 = Sheets("Foglio1").Range("B2:E23")
    Set intervallo2 = Sheets("Foglio1").Range("B2:E59")
    Set intervallo3 = Sheets("Foglio1").Range("B2:E123")
    
    
        intervallo3.Select
        ActiveWindow.SelectedSheets.PrintOut From:=1, Copies:=1
        Selection.PrintOut From:=1, Copies:=1
        ActiveSheet.PageSetup.PrintArea = ""
        With ActiveSheet.PageSetup
            .LeftMargin = Application.InchesToPoints(0.4)
            .RightMargin = Application.InchesToPoints(0.4)
            .TopMargin = Application.InchesToPoints(0.5)
            .BottomMargin = Application.InchesToPoints(0.5)
            .CenterHorizontally = True
            .Orientation = xlPortrait
        End With
        
    End Sub
    ...e questo il pezzo di codice che avevo aggiunto ma che non va

    Codice: 
    ActiveSheet.SaveAs Filename:= "Macintosh HD:Users:xxx:Documents:Lavoro:Clinica xxx:Nutrizione e Dietologia:Diete:PDF:" & nome_file & ".pdf"
    ovviamente il nome_file l'avevo dichiarato e settato...

    Come e dove posso inserire un determinato path di salvataggio?

    Aiutino dal pubblico?? :167:

    Scusate se non posto il file, ma è un file a più fogli dove è quasi impossibile togliere dati sensibili...appena torno a casa stasera vedo di fare un foglio singolo di esempio...
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  2. #2
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Ho provato a fare questo file prova...dove ci sono macro prova per fare i contorni e per salvare il pdf...

    Domanda: non ha risposto nessuno perché è una domanda posta male o perché nessuno ha Office per Mac (e credo che la costruzione del codice per questo quesito sia un po' diversa da Win...)? :167:

    Solo che non so proprio come e dove mettere (o se c'è altro modo) l'ActiveSheet.SaveAs filename:=......
    File Allegati File Allegati
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  3. #3

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Ciao Bolz1,
    non so se è quello che vuoi, io che ho il MAC salvo in PDF e stampo con queste sub.
    Allego l'esempio col tuo foglio (Ovviamente da sostituire l'user - Ges)

    SALVA PDF
    Codice: 
    Sub SalvaPDF()
        Dim wks1 As Worksheet
        Dim dati As Range
        Dim percorso As String
        Set vks1 = Worksheets("Foglio1")
        Set dati = vks1.Range("B2:E23")
        nomefile = CStr(vks1.Range("B1").Value)
        percorso = "/Users/Ges/Desktop/"
        dati.ExportAsFixedFormat Type:=xlTypePDF, Filename:=percorso & nomefile, _
        Quality:=xlQualityStandard, OpenAfterPublish:=False
        MsgBox "Copia PDF salvata con successo!", vbInformation, "Avviso di notifica"
        Set wks1 = Nothing
        Set dati = Nothing
    End Sub
    STAMPA
    Codice: 
    Sub stampa()
        Dim wks1 As Worksheet
        Dim dati As Range
        Set vks1 = Worksheets("Foglio1")
        Set dati = vks1.Range("B2:E23")
        dati.PrintOut
        Set wks1 = Nothing
        Set dati = Nothing
    End Sub
    File Allegati File Allegati
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  4. I seguenti 2 utenti hanno dato un "Like" a ges per questo post:


  5. #4
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Perfetto! Grazieeee!!! L'ho già modificata per scegliere attraverso una inputbox quale range stampare.

    Avevo trovato sul web e provato una soluzione simile e ci avevo quasi azzeccato. Riguardandola ho visto che l'unica differenza era nella definizione del nomefile, cioè io non mettevo il Cstr iniziale ma solo vks1.Range("B1").Value e non mi funzionava...mi spiegheresti questo Cstr? Definisce il valore del range come stringa?
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  6. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7146
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2063
    Likes dati
    1300
    Citazione Originariamente Scritto da Bolz1 Visualizza Messaggio
    ....mi spiegheresti questo Cstr? Definisce il valore del range come stringa?
    Si, esattamente, infatti si può anche scrivere in questo modo

    Codice: 
    Sub SalvaPDF()
        Dim wks1 As Worksheet
        Dim dati As Range
        Dim percorso As String
        Dim nomefile As String
        Set vks1 = Worksheets("Foglio1")
        Set dati = vks1.Range("B2:E23")
        nomefile = vks1.Range("B1").Value
        percorso = "/Users/Ges/Desktop/"
        dati.ExportAsFixedFormat Type:=xlTypePDF, Filename:=percorso & nomefile, _
        Quality:=xlQualityStandard, OpenAfterPublish:=False
        MsgBox "Copia PDF salvata con successo!", vbInformation, "Avviso di notifica"
        Set wks1 = Nothing
        Set dati = Nothing
    End Sub
    Unica attenzione è che nel nome del file non ci siano caratteri speciali che possono restituire errori.

    Codice: 
    nomefile = CStr(vks1.Range("B1").Value)
    In questo caso ho scelto che il nome del file sia quello riportato nella cella B1 ma se in questa cella c'è una data es. 18/1/2016 potrebbe dare errore. E' stata dichiarata stringa e ci deve essere un testo.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #6
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Scusatemi...mi sembra di essere un cretino. Dopo aver fatto le modifiche del caso e dopo aver inserito 6 case, ho fatto tutte le prove nel pomeriggio e tutto filava liscio....mi salvava il file pdf come e dove volevo io. Ovviamente ho provato con tutti i case (da 1 a 6) e tutto era perfetto. Adesso torno, riapro il file e non funziona più (non ho toccato nulla!)...errore di runtime 1004 - Errore definito dall'applicazione o dall'oggetto :171: :171: Ma che può essere??? Non ho toccato nulla...

    Questo il codice completo...vi metto solo il case 1 (gli altri sono uguali, cambiano ovviamente solo i range)

    Codice: 
    Sub Stampa_dieta()'dichiarazione variabili
    Dim nome_file As String, cognome As String, nome As String, percorso As String
    Dim s_dieta1 As Range, s_dieta2 As Range, s_dieta3 As Range, s_dieta4 As Range, s_dieta5 As Range, s_dieta6 As Range, dati As Range
    
    
    'definizione errore
    On Error GoTo Errore
    
    
    'set range varie diete
    Set s_dieta1 = Worksheets("Schema dieta").Range("A1:AG41")
    Set s_dieta2 = Worksheets("Schema dieta").Range("A1:AG59")
    Set s_dieta3 = Worksheets("Schema dieta").Range("A1:AG77")
    Set s_dieta4 = Worksheets("Schema dieta").Range("A1:AG95")
    Set s_dieta5 = Worksheets("Schema dieta").Range("A1:AG113")
    Set s_dieta6 = Worksheets("Schema dieta").Range("A1:AG131")
    
    
    'definizione percorso e nome file
    cognome = Sheets("Schema dieta").Cells(5, 3).Value
    nome = Sheets("Schema dieta").Cells(5, 12).Value
    nome_file = cognome & " " & nome & " " & "schema dieta"
    
    
    'inputbox per chiedere il n. di diete da stampare
    stampa = InputBox("Quante diete vuoi stampare?", "STAMPA DIETA", 1)
    
    
    'vari casi di tutte le diete
        Select Case stampa
            
            Case 1
                Sheets("Schema dieta").Activate
                
                'creare bordi spessi all'area della dieta
                s_dieta1.Select
                    For i = 7 To 10
                        With Selection.Borders(i)
                        .LineStyle = xlContinuous
                        .Weight = xlMedium
                        .ColorIndex = xlAutomatic
                        End With
                    Next i
                
                Set dati = s_dieta1
                
                    'percorso di salvataggio
                    percorso = "Macintosh HD:Users:XXX:Documents:Lavoro:Clinica XXX:Nutrizione e Dietologia:Diete:PDF:"
                    dati.ExportAsFixedFormat Type:=xlTypePDF, Filename:=percorso & nome_file, _
                    Quality:=xlQualityStandard, OpenAfterPublish:=False
                    
                    'messaggio di notifica salvataggio
                    MsgBox "Copia PDF salvata con successo!", vbInformation, "Avviso di notifica"
                    
                    Set dati = Nothing
                    
                Worksheets("Schema dieta").Activate
                Range("D5").Select
                
            Case 2
                Sheets("Schema dieta").Activate
                Sheets("Schema dieta").Range("A43:AG59").Select
                    For i = 7 To 10
                        With Selection.Borders(i)
                        .LineStyle = xlContinuous
                        .Weight = xlMedium
                        .ColorIndex = xlAutomatic
                        End With
                    Next i
                    
                Set dati = s_dieta2
        
                    percorso = "Macintosh HD:Users:XXX:Documents:Lavoro:Clinica XXX:Nutrizione e Dietologia:Diete:PDF:"
                    dati.ExportAsFixedFormat Type:=xlTypePDF, Filename:=percorso & nome_file, _
                    Quality:=xlQualityStandard, OpenAfterPublish:=False
                    MsgBox "Copia PDF salvata con successo!", vbInformation, "Avviso di notifica"
                    Set dati = Nothing
                Worksheets("Schema dieta").Activate
                Worksheets("Schema dieta").Range("A43:AG59").Select
                Selection.Borders(xlEdgeBottom).LineStyle = xlNone
                Range("D5").Select
            
            Case 3
                ...
            
            Case 4
                ...
            
            Case 5
                ...
    
            Case 6
                ...
    
    
        End Select
        Exit Sub
        
    Errore:
    Messaggio = MsgBox("La cartella di destinazione non è corretta", vbInformation, "Errore salvataggio")
    Exit Sub
    
    
    Set s_dieta1 = Nothing
    Set s_dieta2 = Nothing
    Set s_dieta3 = Nothing
    Set s_dieta4 = Nothing
    Set s_dieta5 = Nothing
    Set s_dieta6 = Nothing
    
    
    End Sub
    EDIT: dimenticavo, il debug me lo segnala sulla stringa in rosso...
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

  8. #7
    L'avatar di Bolz1
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Padova
    Età
    41
    Messaggi
    117
    Versione Office
    '11 e 16 MAC
    Likes ricevuti
    7
    Likes dati
    1
    Riacceso il Mac adesso...funziona tutto...buh, non so perché ieri sera mi dava quell'errore...
    "Se tu segui tua stella non puoi fallire a glorioso porto" (Dante, Inferno - XV)

Discussioni Simili

  1. Colorare Sfondo Range di Celle con VBA
    Di Tullio17 nel forum Domande su Excel VBA e MACRO
    Risposte: 23
    Ultimo Messaggio: 12/12/16, 17:47
  2. Risposte: 2
    Ultimo Messaggio: 04/10/16, 19:49
  3. Individuare Min e Max in un range di celle
    Di Lcbsm nel forum Domande su Excel VBA e MACRO
    Risposte: 4
    Ultimo Messaggio: 11/03/16, 17:26
  4. Salvataggio di un range di celle
    Di John nel forum Domande su Excel VBA e MACRO
    Risposte: 7
    Ultimo Messaggio: 22/12/15, 14:51
  5. Colorare piu' celle con un range di numeri
    Di daigoro7 nel forum Domande su Excel in generale
    Risposte: 14
    Ultimo Messaggio: 05/10/15, 14:16

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •