Ciao,
se il componente aggiuntivo, che ci hai inviato, non fosse stato protetto avremmo copiato ed adattato il codice e risolto in poco tempo e con poco impegno.
In questo caso occorrerà scrivere da zero tutto il codice ... ci vorrà un po' di tempo.
Moderatori: Anthony47, Flash30005
gimart ha scritto:Confermo che voglio che mi copii: larghezza colonne, altezza righe, sfondi e bordi delle celle, testi, caratteri con relativi font e dimensioni, commenti e quant'altro . Cioè tutto quello che il vecchio componente copia.xla mi faceva. E' ben chiaro che occorrerà una macro scritta in VBA, ma se si è fatto per il 2003, certamente si potrà fare per il 2010. Ho molta fiducia in questo Forum.
'---------------------------------------------------------------------------------------
' Procedure : CopiaTutto
' Author : scossa
' Date : 23/10/2012
'---------------------------------------------------------------------------------------
'
Public Sub CopiaTutto()
Dim rngFrom As Range
Dim rngTo As Range
Dim rRowCol As Range
Dim j As Long
Set rngFrom = Selection
On Error Resume Next
Set rngTo = Application.InputBox("destinazione:", Type:=8)
On Error GoTo 0
If Not rngTo Is Nothing And Err.Number = 0 And Intersect(rngFrom, rngTo) Is Nothing Then
rngFrom.Copy rngTo(1, 1)
For Each rRowCol In rngFrom.Rows
j = j + 1
rngTo.Rows(j).RowHeight = rRowCol.RowHeight
Next
j = 0
For Each rRowCol In rngFrom.Columns
j = j + 1
rngTo.Columns(j).ColumnWidth = rRowCol.ColumnWidth
Next
Else
MsgBox "operazione abortita", vbCritical, "AVVISO"
End If
Set rngFrom = Nothing
Set rngTo = Nothing
End Sub
scossa ha scritto:gimart ha scritto:Confermo che voglio che mi copii: larghezza colonne, altezza righe, sfondi e bordi delle celle, testi, caratteri con relativi font e dimensioni, commenti e quant'altro . Cioè tutto quello che il vecchio componente copia.xla mi faceva. E' ben chiaro che occorrerà una macro scritta in VBA, ma se si è fatto per il 2003, certamente si potrà fare per il 2010. Ho molta fiducia in questo Forum.
Non ho visto il componente aggiuntivo ma questa macro dovrebbe fare quello che chiedi.
Prima devi selezionare le celle DA copiare e poi la lanci. Quando ti verrà chiesto di selezionare la destinazione, basta selezionare una sola cella e premere OK.
- Codice: Seleziona tutto
'---------------------------------------------------------------------------------------
' Procedure : CopiaTutto
' Author : scossa
' Date : 23/10/2012
'---------------------------------------------------------------------------------------
'
Public Sub CopiaTutto()
Dim rngFrom As Range
Dim rngTo As Range
Dim rRowCol As Range
Dim j As Long
Set rngFrom = Selection
On Error Resume Next
Set rngTo = Application.InputBox("destinazione:", Type:=8)
On Error GoTo 0
If Not rngTo Is Nothing And Err.Number = 0 And Intersect(rngFrom, rngTo) Is Nothing Then
rngFrom.Copy rngTo(1, 1)
For Each rRowCol In rngFrom.Rows
j = j + 1
rngTo.Rows(j).RowHeight = rRowCol.RowHeight
Next
j = 0
For Each rRowCol In rngFrom.Columns
j = j + 1
rngTo.Columns(j).ColumnWidth = rRowCol.ColumnWidth
Next
Else
MsgBox "operazione abortita", vbCritical, "AVVISO"
End If
Set rngFrom = Nothing
Set rngTo = Nothing
End Sub
If Not rngTo Is Nothing And Err.Number = 0 And Intersect(rngFrom, rngTo) Is Nothing Then
If (Not rngTo Is Nothing) And (Err.Number = 0) Then
gimart ha scritto:Scossa, funziona perfettamente . Una cosa però non ho capito: finchè io debbo copiare le celle selezionate in altra zona dello stesso foglio, va tutto bene: nella finestra "Destinazione" digito il nome della cella origine e la copia viene effettuata perfettamente. Ma come faccio se la copia (ed è il caso più frequente per me) deve essere fatta su un altro foglio o, addirittura, su un altro file?
scossa ha scritto:Però, utilizzando Application.Inputbox questa macro funziona solo sul file attivo.
Puoi sembre cambiare il codice per impostare rngTo.
gimart ha scritto:Il problema rimane solo se si tratta di due fogli diversi dello stesso file in quanto non mi risulta che possano essere visualizzati insieme sul monitor. Se ti viene qualche idea....
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Selection.Rows.Count + Selection.Columns.Count) < 3 Then Exit Sub
Risp = MsgBox(Prompt:="Vuoi copiare le celle?", Buttons:=vbYesNo)
If Risp = 6 Then
Application.EnableEvents = False
CopiaTutto
Application.EnableEvents = True
End If
End Sub
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If (Selection.Rows.Count + Selection.Columns.Count) < 3 Then Exit Sub
Risp = MsgBox(Prompt:="Vuoi copiare le celle?", Buttons:=vbYesNo)
If Risp = 6 Then
Application.EnableEvents = False
CopiaTutto
Application.EnableEvents = True
End If
End Sub
Flash30005 ha scritto:Cmplimenti a Scossa per la macro postata
Se Gimart utilizza il foglio per digitare dati (singole celle) e seleziona un range solo per copiare potrebbe tornare utile far avviare la macro di Scossa con questo codice da inserire nel vba del foglio (o dei fogli)
- Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If (Selection.Rows.Count + Selection.Columns.Count) < 3 Then Exit Sub
Risp = MsgBox(Prompt:="Vuoi copiare le celle?", Buttons:=vbYesNo)
If Risp = 6 Then
Application.EnableEvents = False
CopiaTutto
Application.EnableEvents = True
End If
End Sub
Oppure se questa operazione la vuoi effettuare su tutti i fogli
puoi inserire in Thisworkbook questo codice (eviti di inserire il codice in ogni foglio)
- Codice: Seleziona tutto
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If (Selection.Rows.Count + Selection.Columns.Count) < 3 Then Exit Sub
Risp = MsgBox(Prompt:="Vuoi copiare le celle?", Buttons:=vbYesNo)
If Risp = 6 Then
Application.EnableEvents = False
CopiaTutto
Application.EnableEvents = True
End If
End Sub
Ciao
Torna a Applicazioni Office Windows
Come impostare il formato data predefinito in excel? Autore: wallace&gromit |
Forum: Applicazioni Office Windows Risposte: 5 |
Creare un file Excel con fogli visibili in base all'accesso Autore: JanVathek |
Forum: Applicazioni Office Windows Risposte: 22 |
Screenshot automatizzato fogli excel:script?macro o...? Autore: Paolo67met |
Forum: Programmazione Risposte: 9 |
Visitano il forum: Nessuno e 14 ospiti