I'm starting to wonder if editing the spreadsheet location and range in an existing AutoCad datalink is even possible.
Parameters:
Existing datalink info:
Location: C;\\PRD\\LISP\\Datalink Test 001.xlsx
Range: D1:D1
New Datalink info:
Location: C:\\PRD\\LISP\\Datalink Test\\Datalink Test 002.xlsx
Range: D4:D4
The 301 code/edit:
(setq datalinkDict301 (dictsearch (namedobjdict) "ACAD_DATALINK"))
(setq datalink301 (dictsearch (cdr (assoc -1 datalinkDict301)) "JEI - Cable"))
(setq datapath_orig301 (cdr (assoc 301 datalink301)))
(setq datapath301 (vl-string-subst "Data Link\nJEI - Cable\nC:\\PRD\\Apps\\LISP\\Datalink Test\\Data Link Test 002.xlsx\nLink details: Range: D4:D4" datapath_orig301 (cdr (assoc 301 datalink301))))
(entmod (subst (cons 301 datapath301) (assoc 301 datalink301) datalink301))
Result:
<snip> (301 . "Data Link\nJEI - Cable\nC:\\PRD\\Apps\\LISP\\Datalink Test\\Data Link Test 002.xlsx\nLink details: Range: D4:D4") <snip>
^that works, afaik^
302 code/edit:
(setq datalinkDict302 (dictsearch (namedobjdict) "ACAD_DATALINK"))
(setq datalink302 (dictsearch (cdr (assoc -1 datalinkDict302)) "JEI - Cable"))
(setq datapath_orig302 (cdr (assoc 302 datalink302)))
(setq datapath302 (vl-string-subst "..\\Apps\\LISP\\Datalink Test\\Data Link Test 002.xlsx!Sheet1!D4:D4" datapath_orig302 (cdr (assoc 302 datalink302))))
(entmod (subst (cons 302 datapath302) (assoc 302 datalink302) datalink302))
Result:
<snip> (302 . "..\\Apps\\LISP\\Data Link Test 001.xlsx!Sheet1!D1:D1..\\Apps\\LISP\\Data Link Test 001.xlsx!Sheet1!D1:D1..\\Apps\\LISP\\Datalink Test\\Data Link Test 002.xlsx!Sheet1!D4:D4") <snip>
The 302 edit is resulting in an appended string and causes an error when opening the datalink for editing.
I can't seem to get to the embedded code 1 data to replace that string.
Has anyone else attempted this? Any ideas?
AutoCad 2018 (full)
Win 11 Pro