Riempire le celle della tabella con una macro (Microsoft Word)
Dato che lavori con le tabelle in Word, potresti voler riempire le varie celle di una tabella con un valore impostato. Ad esempio, potresti voler copiare qualcosa negli Appunti e quindi incollare il contenuto degli Appunti in ogni cella di una tabella. La seguente macro farà il trucco:
Sub PasteToCells() Dim TargetRange As Range Dim oTargCell As Cell If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells oTargCell.Range.Paste Next oTargCell TargetRange.Select End Sub
La macro inizia verificando che la selezione includa alcune celle. In caso contrario, l’utente viene informato e la macro viene terminata.
Quindi la selezione viene memorizzata in una variabile in modo che possa essere selezionata (di nuovo) alla fine della macro. Senza questo codice, la macro lascerebbe il punto di inserimento compresso nella prima cella della selezione originale.
La vera carne della macro è nel ciclo For … Next. Passa attraverso le celle nella selezione e sostituisce ciò che è presente con il contenuto degli Appunti. Infine, la selezione originale viene nuovamente selezionata e la macro termina.
Probabilmente hai notato che c’è anche un’istruzione On Error nella macro. Questa istruzione fondamentalmente dice a Word di ignorare eventuali errori e continuare con l’istruzione successiva. Gli errori che potrebbero essere attivati includono l’esecuzione della macro senza nulla negli Appunti o il tentativo di incollare una tabella all’interno di una cella della tabella. Word non eseguirà nessuna delle due attività, ma continuerà a provare fino a quando non avrà completato tutte le celle nella selezione.
Dovresti notare che questa macro sostituisce tutto ciò che è nelle celle selezionate con il contenuto degli Appunti; tutto ciò che era precedentemente nelle celle è perso. Se invece vuoi aggiungere informazioni all’inizio delle celle, senza disturbare il contenuto esistente della cella, puoi usare questa macro leggermente modificata:
Sub PasteToCellsStart() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select End Sub
Un’ultima modifica sarebbe quella di creare una macro che incolli alla fine di ciò che è nelle celle. Potresti pensare di poter sostituire wdCollapseStart con wdCollapseEnd nella macro precedente, ma ciò non funziona correttamente all’interno delle tabelle. Invece, è necessario sostituire il ciclo For … Next nella macro precedente. L’esempio seguente mostra una versione modificata della macro.
Sub PasteToCellsEnd() Dim TargetRange As Range Dim oTargCell As Cell Dim PasteRange As Range If Selection.Cells.Count = 0 Then 'Quit if no cells in selection MsgBox "No cells selected", vbCritical Exit Sub End If On Error Resume Next Set TargetRange = Selection.Range For Each oTargCell In Selection.Cells Set PasteRange = oTargCell.Range.Characters.Last PasteRange.Collapse wdCollapseStart PasteRange.Paste Next oTargCell TargetRange.Select End Sub
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.
WordTips è la tua fonte di formazione economica su Microsoft Word.
(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (1508) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia della barra multifunzione di Word (Word 2007 e più tardi) qui: