Monthly Archives: April 2017

Remove shapes on worksheet

Na copy and paste vanaf een website waar tekstvakken tussen staan, komt het niet als echte tekst in de cellen staat, maar waarschijnlijk als ActiveX-besturingselementen (zoals tekstvakken) die over de cellen heen zweven. Excel ziet de cel zelf als leeg omdat de tekst die je ziet zich in een object bovenop de cel bevindt. Als je op zo’n tekstvak klikt verschijnt er in de formulebalk EMBED("Forms.HTML:Text.1";"")

Dit is inderdaad de boosdoener! De EMBED("Forms.HTML:Text.1";"") bevestigt dat het om een ActiveX-object gaat. Omdat deze objecten “bovenop” de grid zweven, ziet een normale Excel-formule ze niet.

Handmatig de waarden in die tekstvakken overtypen is bij lange lijsten ondoenlijk. Je kunt dit gelukkig automatiseren met een kort VBA-script dat de waarde uit het tekstvak leest, in de cel er naast plaatst en vervolgens het object verwijdert



Sub TekstvakNaarKolomC()
    Dim shp As Shape
    Dim cel As Range
    
    ' Loop door alle objecten op het actieve blad
    For Each shp In ActiveSheet.Shapes
        ' Controleer of het een ActiveX/OLE object is
        If shp.Type = msoOLEControlObject Then
            On Error Resume Next
            ' Bepaal de cel waar het tekstvak "begint" (kolom B)
            Set cel = shp.TopLeftCell
            
            ' Plaats de waarde in kolom C (0 rijen omlaag, 1 kolom opzij)
            cel.Offset(0, 1).Value = shp.OLEFormat.Object.Object.Value
            
             ' Optioneel: Verwijder het object nadat de waarde is gekopieerd
            shp.Delete
            On Error GoTo 0
        End If
    Next shp
    
    MsgBox "Klaar! De waarden staan nu in kolom C.", vbInformation
End Sub