Probably the same either way.
LISP/Script would be quite capable, lot's of code around for adding attributes, pretty sure Lee Mac has something.
VBA, IMO, might have a slight advantage running on multiple drawings.
.NET or Python an option?
This post is like option 2 of this post. Is there an option 3 ? Will answer last question in other post. Suggest keep all in one post.
Give this a try does both requests.
(defun c:addval ( / lst lst2 att cnt lst3)
(setq inc (getreal "\nEnter increment + or - "))
(setq ss (ssget '((0 . "TEXT,ATTDEF"))))
(setq lst '() tnum 0 tatt 0)
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (1- x)))))
(setq objname (vlax-get obj 'objectname))
(if (= objname "AcDbText")
(progn
(vlax-put obj 'textstring (rtos (+ (atof (vlax-get obj 'textstring)) inc) 2 0))
(setq tnum (1+ tnum))
)
(progn
(vlax-put obj 'tagstring (rtos (+ (atof (vlax-get obj 'tagstring)) inc) 2 0))
(setq tatt (1+ tatt))
)
)
)
(alert (strcat (rtos tnum 2 0) " text changed \n" (rtos tatt 2 0) " tags Changed"))
(princ)
)
If you introduce more objects may need a cond rather than using IF.
@pkenewell I dont know how , when, or why but I can see the acadauto.chm to work
I did a copy file from Copy and paste chm and paste to the dwg , and despite vlide show the same alert NOT FOUND , it work.
Thank you Michaels.
Here it goes right now you can share it with me.
(defun c:try (/ sel objs ents all)
(setq sel (ssget "_:L" '((0 . "TEXT,MTEXT"))))
(setq objs -1)
[color="Red"](while[/color] (setq ents (ssname sel (setq objs (1+ objs))))
(setq all (entget ents))
(entmod (subst (cons 1 (rtos (atof (cdr (assoc 1 all)))2 2)) (assoc 1 all)
all))
)
(princ)
)
Sincerly
Tharwat