area di stanmpa variabile
Hai un problema con Excel? 
area di stanmpa variabile
di nichicanta data: 11/07/2013 16:41:24
un saluto a tutti gli amici del forum, ho la necessità di stampare (un'area di stampa che contienne dati variabili). Ho impostato questo codice con un'are di stampa predefinita (ovviamente è molto piu' grande di quello che serve, per avere la certezza che non vengano stampati dati in meno).
C'è la possibilità di stampare solo la parte di area di stampa che contiene i dati (poichè questi cambiano di dimensiuone ogni volta) e non parti che poi vengono stampati senza dati.
P.S. riepilogo:
stampa di solo dati, con intestazioni di colonna da ripetere su ogni foglio da stampare.
Saluti e buona giornata a tutti.
Sub stampa()
X = InputBox("Quante copie vuoi stampare?")
If X = "" Then
Exit Sub
Else
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$b$1:$i$5000" " qui dovrebbe esserci un codice che prende come stampa un'area che contenga solo ed esclusivamente dati
ActiveWindow.SelectedSheets.PrintOut Copies:=X
Application.Wait Now + TimeValue("00:00:5")
End If
End Sub |
di Vecchio Frac data: 11/07/2013 19:19:04
Del foglio in esame, calcola la colonna più a destra che contiene un dato, e quindi calcola la riga più in basso che contiene un dato.
Quindi imposti l'area di stampa a tale range.
Il metodo più semplice per raggiungere l'ultima cella valorizzata di un range rettangolare valorizzato sfrutta la tecnica della specialcell xlCellTypeLastCell:
activesheet.cells.specialcells(xlCellTypeLastCell).address
restituisce l'indirizzo della cella più in basso e più a destra del range che contiene tutti i valori del foglio in questione.
di nichicanta (utente non iscritto) data: 12/07/2013 08:50:59
Caro V.F. ho fatto delle prove con il codice che tu mi hai indicato ma mi compare il seguente messaggio di errore.
Errore di Run Time '438':
Proprietà o metodo non supportato dall'oggetto.
Mi sai dire perchè?
Ti saluto e ti auguro buon lavoro.
Sub stampa()
X = InputBox("Quante copie vuoi stampare?")
If X = "" Then
Exit Sub
Else
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = "$b$1:$i$5000" 'cosi si stampa un'area di stampa predefinita
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address
'ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=X
Application.Wait Now + TimeValue("00:00:5")
End If
End Sub |
di paolomath data: 12/07/2013 10:03:33
Ciao, prova così:
Sub stampa()
X = InputBox("Quante copie vuoi stampare?")
If X = "" Then
Exit Sub
Else
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
.PrintArea = "$b$1:" & ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=X
Application.Wait Now + TimeValue("00:00:5")
End If
End Sub |
di HarryBosch data: 12/07/2013 10:09:19
Non ti funziona perché l'area di stampa rimane sempre quella:
ActiveSheet.PageSetup.PrintArea = "$b$1:$i$5000"
e non utilizzi l'indicazione che ti ha indicato VecchioFrac.
Tale istruzione deve infatti essere valorizzata e quindi assegnata all'area di stampa:
ActiveSheet.PageSetup.PrintArea = "$b$1:" & ultima_cella_foglio
Vedi la revisione sotto
Sub stampa()
Dim X, ultima As Variant
'ultima cella in basso a destra
ultima = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Address
X = InputBox("Quante copie vuoi stampare?")
If X = "" Then Exit Sub
With ActiveSheet.PageSetup
.PrintTitleRows = "$1:$1"
.PrintTitleColumns = ""
'imposto l'area di stampa dalla cella che mi interessa all'ultima del foglio:
.PrintArea = "$B$1:" & ultima
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=X
Application.Wait Now + TimeValue("00:00:5")
End Sub
|
di HarryBosch data: 12/07/2013 10:11:35
Oh, Paolomath mi aveva già anticipato ^_^
E molto bene anche, visto che già aveva suggerito la strada giusta per proseguire...
Bene!
di nichicanta (utente non iscritto) data: 12/07/2013 11:53:16
Grazie e buona giornata a tutti Voi.
un infinito e molto sentito ringraziamento per tutto il vostro aiuto e impegno.
Vuoi Approfondire?