Alternatively, here's a vba macro that will do the same; plus..
1. Checks if you are working in millimeter ( via ltscale system variable) so that it will not give you an area in square millimeter.
and;
2.put the area to clipboard for pasting later (say in excel table).
Code:
Sub AreaText()
Dim ClipData As New DataObject
Dim returnObj As AcadObject
Dim basePnt, RetPoint As Variant
Dim NewText As AcadText
Dim Area As Variant
Dim txtStyleObj As AcadTextStyle
Set txtStyleObj = ThisDrawing.ActiveTextStyle
On Error Resume Next
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select Object to Calculate..."
If Err <> 0 Then
Err.Clear
Exit Sub
Else
If returnObj.Area = "" Then
MsgBox "Object is a " & Mid(returnObj.ObjectName, 5, 30) & " and it doesn't have an area."
Exit Sub
End If
'MsgBox returnObj.ObjectName
CurrHeight = txtStyleObj.LastHeight
currltscale = ThisDrawing.GetVariable("LTSCALE")
If currltscale < 100 Then
Area = Format(returnObj.Area, "#,###.00 SQ. M.")
'MsgBox "The current value for Area is " & Area & "."
Else
Area = Format((returnObj.Area / 1000000), "#,###.00 SQ. M.")
End If
ClipData.SetText (Format(returnObj.Area, "#,###.00"))
ClipData.PutInClipboard
RetPoint = ThisDrawing.Utility.GetPoint(, "Area is " & Area & vbCrLf & "Pick point where text is to be inserted...")
Set NewText = ThisDrawing.ModelSpace.AddText(Area, RetPoint, CurrHeight)
NewText.Layer = "Text"
ThisDrawing.SendCommand "justifytext" & vbCr & "l" & vbCr & vbCr & "m" & vbCr
End If
End Sub
Note: This tool adapts the height of the last created text.