Macro stampa cartella con fogli specifici

Anonimo
2013-09-19T15:56:29+00:00

Ho questa macro che uso efficacemente da diversi anni per stampare una cartella di lavoro Excel 2007, ma solo con i fogli da me decisi.

Vorrei modificarla affinché oltre ai Fogli Pippo, Pluto, Paperino si aggiungessero, nell'ordine, tutti i Fogli che hanno la cella A36 diversa da "", cioè non vuota.

Qualcuno può darmi per favore un utile suggerimento su come modificare la macro?

Grazie.

Giuseppe

Public Sub mStampa()

'dichiaro le variabili

    Dim shArray As Sheets

    Dim wk As Workbook

    Dim lRisposta As Long

On Error GoTo RigaErrore

    'richiamo la finestra per la scelta della stampante

    Application.Dialogs(xlDialogPrinterSetup).Show

    'richiamo la MsgBox di conferma

   lRisposta = MsgBox(Prompt:="Vuoi davvero stampare?", _

        Buttons:=vbYesNo + vbQuestion, _

        Title:="Continuare?")

    'se l'utente preme Sì

    If lRisposta = vbYes Then

        'metto un riferimento al workbook

        'che contiene il codice

        Set wk = ThisWorkbook

        With wk

            'creo il nuovo insieme di fogli

            Set shArray = _

                .Worksheets(Array("Pippo", "Pluto", "Paperino"))

        End With

        'stampa

        shArray.PrintOut Copies:=1

    End If

'riga sempre eseguita

RigaChiusura:

    'Set a Nothing delle variabili oggetto

    Set shArray = Nothing

    Set wk = Nothing

    'uscita dalla routine

    Exit Sub

'in caso di errore

RigaErrore:

    'MsgBox con numero e descrizione errore

    MsgBox Err.Number & vbNewLine & Err.Description

    'vai alla RigaChiusura

    Resume RigaChiusura

End Sub


Giuseppe

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
2013-09-20T07:51:55+00:00

Ciao Andrea,

si è vero, ma le risposte non avevano risolto l'esigenza da me posta, perché i suggerimenti dati non permettevano di stampare la cartella nell'insieme ma i singoli fogli. Ho chiesto ancora aiuto ma non ho ricevuto altre risposte. Poi un utente mi suggerito di porre la domanda nella community VBA e infine un utente di quest'ultima mi ha consigliato di proporre un nuovo tread nella Community di Office.

Ecco fatto. Spero che qualcuno mi aiuti.

In fondo sembra semplice: ho già la macro e mi permette di stampare la cartella ma solo con i fogli che si chiamano in un certo modo. Per me è importante stampare la cartella e non i singoli fogli perché in questo modo avrò un documento impaginato e numerato in sequenza nelle pagine. Vorrei solo che oltre ai fogli che hanno un certo nome la cartella da stampare comprendesse anche i Fogli con la cella A36 non vuota.

Grazie ancora.

Giuseppe

 

Ciao Giuseppe,

probabilmente troppo difficile per la Community Office e troppo facile per la Community VBA. ;)

Modifica i nomi dei fogli nella riga evidenziata.

Andrea.


Public Sub mStampa()

'dichiaro le variabili

Dim shArray As Sheets

Dim wk As Workbook

Dim ws As Worksheet

Dim lRisposta As Long

Dim sFogliDaStampare As String

On Error GoTo RigaErrore

'richiamo la finestra per la scelta della stampante

Application.Dialogs(xlDialogPrinterSetup).Show

'richiamo la MsgBox di conferma

lRisposta = MsgBox(Prompt:="Vuoi davvero stampare?", _

Buttons:=vbYesNo + vbQuestion, _

Title:="Continuare?")

'se l'utente preme Sì

If lRisposta = vbYes Then

'metto un riferimento al workbook

'che contiene il codice

Set wk = ThisWorkbook

With wk

'---------- inserisci qui i fogli da stampare predefiniti

sFogliDaStampare = "Pippo,Pluto,Paperino"

'---------- oltre a quelli predefiniti, aggiunge i fogli con A36 <> ""

For Each ws In .Worksheets

If InStr(sFogliDaStampare, ws.Name) = 0 Then

If Len(ws.Range("A36").Value) Then sFogliDaStampare = sFogliDaStampare & "," & ws.Name

End If

Next

'creo il nuovo insieme di fogli

Set shArray = .Worksheets(Split(sFogliDaStampare, ","))

End With

'stampa

shArray.PrintOut Copies:=1

End If

'riga sempre eseguita

RigaChiusura:

'Set a Nothing delle variabili oggetto

Set shArray = Nothing

Set wk = Nothing

Set ws = Nothing

'uscita dalla routine

Exit Sub

'in caso di errore

RigaErrore:

'MsgBox con numero e descrizione errore

MsgBox Err.Number & vbNewLine & Err.Description

'vai alla RigaChiusura

Resume RigaChiusura

End Sub


La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-10-10T17:11:11+00:00

Ciao Andrea.

Posso fare una domanda a proposito di queste tue macro mStampa e mSalvaPDF?

I fogli predefiniti da stampare "Pippo, Pluto, Paperino" vengono stampati alla fine rispetto agli altri fogli. Come posso fare per farli stampare all'inizio e poi tutti gli altri fogli?

Grazie.

Giuseppe

Ciao Giuseppe,

le macro che iniziano per m le scrive Mauro non io ... le mie iniziano per a. ;)

Scherzi a parte, dato che i fogli sono stampati in blocco, e previa selezione per il formato pdf, l'ordine di stampa sarà quello in cui si presentano nella cartella, non ti rimane che spostare i fogli predefiniti prima degli altri da stampare.

Andrea.

La risposta è stata utile?

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2013-09-23T06:25:21+00:00

Ciao Andrea.

Se ho capito bene avrei dovuto modificare la prima macro in questo modo. Togliendo anche la riga sulla scelta della stampante. Ma mi da errore e non so perché.

Considera che io sono meno che un dilettante e cerco di trovare delle piccole soluzioni brancolando un po' nel buio e avvalendomi della gentilezza e professionalità di persone come te, disposte ad aiutarmi.

Ho anche un'altra domanda: non si potrebbe richiamare la finestra che compare quando dal menu di Excel scelgo di salvare come PDF? questo ci eviterebbe di dovere avere una riga nella macro con un percorso di salvataggio predefinito e che non si può scegliere di volta in volta.

Ancora grazie.

Giuseppe

...

Ciao Giuseppe,

sarebbe utile sapere che errore incontri, in ogni caso il codice allegato per me funziona senza errori.

Andrea.


Public Sub mSalvaPDF()

'dichiaro le variabili

Dim shArray As Sheets

Dim wk As Workbook

Dim ws As Worksheet

Dim lRisposta As Long

Dim sFogliDaStampare As String

On Error GoTo RigaErrore

'richiamo la MsgBox di conferma

lRisposta = MsgBox(Prompt:="Vuoi davvero stampare?", _

Buttons:=vbYesNo + vbQuestion, _

Title:="Continuare?")

'se l'utente preme Sì

If lRisposta = vbYes Then

'metto un riferimento al workbook

'che contiene il codice

Set wk = ThisWorkbook

With wk

'---------- inserisci qui i fogli da stampare predefiniti

sFogliDaStampare = "Pippo,Pluto,Paperino"

'---------- oltre a quelli predefiniti, aggiunge i fogli con A36 <> ""

For Each ws In .Worksheets

If InStr(sFogliDaStampare, ws.Name) = 0 Then

If Len(ws.Range("A36").Value) Then sFogliDaStampare = sFogliDaStampare & "," & ws.Name

End If

Next

'creo il nuovo insieme di fogli

Set shArray = .Worksheets(Split(sFogliDaStampare, ","))

End With

'stampa

Dim sFileName As Variant

'sFileName = "C:\FilePdf.pdf"

sFileName = Application.GetSaveAsFilename(InitialFileName:=ThisWorkbook.Path, fileFilter:="PDF Files (*.pdf), *.pdf")

If sFileName <> False Then

shArray.Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=sFileName

End If

End If

'riga sempre eseguita

RigaChiusura:

'Set a Nothing delle variabili oggetto

Set shArray = Nothing

Set wk = Nothing

Set ws = Nothing

'uscita dalla routine

Exit Sub

'in caso di errore

RigaErrore:

'MsgBox con numero e descrizione errore

MsgBox Err.Number & vbNewLine & Err.Description

'vai alla RigaChiusura

Resume RigaChiusura

End Sub


La risposta è stata utile?

0 commenti Nessun commento

13 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-09-20T06:45:23+00:00

    Ciao Andrea,

    si è vero, ma le risposte non avevano risolto l'esigenza da me posta, perché i suggerimenti dati non permettevano di stampare la cartella nell'insieme ma i singoli fogli. Ho chiesto ancora aiuto ma non ho ricevuto altre risposte. Poi un utente mi suggerito di porre la domanda nella community VBA e infine un utente di quest'ultima mi ha consigliato di proporre un nuovo tread nella Community di Office.

    Ecco fatto. Spero che qualcuno mi aiuti.

    In fondo sembra semplice: ho già la macro e mi permette di stampare la cartella ma solo con i fogli che si chiamano in un certo modo. Per me è importante stampare la cartella e non i singoli fogli perché in questo modo avrò un documento impaginato e numerato in sequenza nelle pagine. Vorrei solo che oltre ai fogli che hanno un certo nome la cartella da stampare comprendesse anche i Fogli con la cella A36 non vuota.

    Grazie ancora.

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-09-19T17:06:13+00:00

    Ho questa macro che uso efficacemente da diversi anni per stampare una cartella di lavoro Excel 2007, ma solo con i fogli da me decisi.

    Vorrei modificarla affinché oltre ai Fogli Pippo, Pluto, Paperino si aggiungessero, nell'ordine, tutti i Fogli che hanno la cella A36 diversa da "", cioè non vuota.

    Qualcuno può darmi per favore un utile suggerimento su come modificare la macro?

    Grazie.

    Giuseppe

    ...

    Ciao Giuseppe,

    ma non era già stata postata una risposta qui?

    Andrea.

    La risposta è stata utile?

    0 commenti Nessun commento