Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Chiara,
La mia domanda è la seguente. Devo stampare esclusivamente alcune celle di un foglio Excel. Le celle non sono ravvicinate, ma piuttosto sparse. Quindi seleziono una evidenziandola e poi, tenendo premuto il tasto CTRL, seleziono le altre.
Clicco su stampa, imposto stampa solo la selezione, ma l'anteprima e la conseguente stampa mi posiziona una cella per foglio, al massimo due. Senza posizionarle tutte in un foglio. In questo modo avviene uno spreco notevole di carta, visto che devo ritagliarle e plastificarle.
Vorrei sapere se c'è la possibilità di selezionare celle distanti tra loro in un foglio e riuscirle a stampare tutte su uno stesso foglio.
Grazie mille! Vi prego urgente per lavoro
Prova qualcosa del genere:
- Alt+F11 per aprire l'editor di VBA
- Alt+IM per inserire un nuovo modulo di codice
- Nel nuovo modulo vuoto, incolla il seguente codice:
'=========>>
Option Explicit
Public Const mioFoglio As String = "Foglio1" '<<==== Modifica
'--------->>
Public Sub StampaCelle()
Dim WB As Workbook
Dim SH As Worksheet, tempSH As Worksheet
Dim Rng As Range, rArea As Range
Dim arrCelle As Variant
Dim sStr As String
Dim i As Long, j As Long, k As Long
Set WB = ThisWorkbook
With WB
Set SH = .Sheets(mioFoglio)
Set tempSH = .Sheets.Add(Before:=SH)
End With
With SH
sStr = .PageSetup.PrintArea
arrCelle = Split(sStr, Application.International(xlListSeparator))
j = 1
For i = LBound(arrCelle) To UBound(arrCelle)
Set Rng = .Range(arrCelle(i))
With Rng
k = .Rows.Count
.Copy tempSH.Range("A" & j)
End With
j = j + k
Next i
End With
With tempSH
.UsedRange.EntireColumn.AutoFit
.PrintOut 'Preview
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
End Sub
'<<=========
- Ctrl+R per accedere alla finestra Project Explorer ('Gestione progetti')
- Fai doppio clic sul modulo ThisWorkbook (Questa_cartella_di_Lavoro) del file e incolla il seguente codice:
'=========>>
Option Explicit
'--------->>
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If ActiveSheet.Name = mioFoglio Then
Call StampaCelle
Cancel = True
End If
End Sub
'<<=========
- Alt+Q per chiudere l'editor di VBA e tornare a Excel
- Salva il file con l’estensione xlsm
Ora, quando si seleziona l'opzione per stampare il foglio di interesse, le celle di interesse saranno stampati in un intervallo contiguo, sfruttando un foglio temporaneo che viene eliminato dopo l'operazione di stampa. Tutti gli atri fogli saranno stampati nel modo normale.
Potresti scaricare il mio file di prova Chiara20160908.xlsm a:
https://www.dropbox.com/s/cy0me0h274p77ty/Chiara20160908.xlsm?dl=0
===
Regards,
Norman