Come spostare il testo dalle caselle di testo alle celle del foglio di lavoro

Excel ti consente di posizionare tutti i tipi di oggetti grafici nel tuo foglio di lavoro. Un tipo di oggetto grafico contiene effettivamente del testo: una casella di testo. Se in un foglio di lavoro sono presenti numerose caselle di testo, ti starai chiedendo se esiste un modo per estrarre il testo da ciascuna casella di testo e inserirlo nel foglio di lavoro stesso.

Non esiste alcun comando per farlo; devi invece usare una macro. La seguente macro esamina ciascuna casella di testo in un foglio di lavoro ed effettua l’estrazione desiderata:

 

Sub ExtractText()
    Dim shp As Shape
    Dim sLoc As String
    For Each shp In ActiveSheet.Shapes
        With shp
            If Left(.Name, 7) = "TextBox" Then
                sLoc = .TopLeftCell.Address
                Do Until Range(sLoc) = ""
                    sLoc = Range(sLoc).Offset(1, 0).Address
                Loop
                Range(sLoc) = .TextFrame.Characters.Text
                .Delete
            End If
        End With
    Next
End Sub

 

 

Poiché Excel memorizza tutte le forme grafiche nella collezione Shapes, puoi scorrere la collezione e decidere con quali forme desideri lavorare. In questo caso, vengono controllati i primi sette caratteri del nome della forma. Solo se il nome inizia con “TextBox” la macro considera la forma come una casella di testo da cui è possibile estrarre il testo.

Invece di verificare la dicitura “TextBox” nel nome, la macro potrebbe anche verificare quale tipo di forma viene considerato. Se preferisci farlo, sostituisci semplicemente la riga di test (If Left…) con la seguente riga di test:

 

If shp.Type = msoTextBox Then

 

La variabile sLoc viene utilizzata per memorizzare la posizione della casella di testo, contenuta nella proprietà .TopLeftCell. Viene quindi utilizzato un ciclo Do per assicurarsi che la cella a cui punta l’indirizzo sia vuota (ciò impedisce che qualsiasi contenuto esistente della cella venga sovrascritto). Se non è vuoto, l’indirizzo viene “spostato” alla cella successiva nella colonna.

Una volta determinato l’indirizzo di una cella vuota, il testo della casella di testo viene memorizzato nella cella. Il metodo .Delete viene quindi utilizzato per eliminare la casella di testo originaria.

 

 

Tags: , , , , , , , , , , , , , , , , , , , ,

Ti è stato utile?