zhaoxt 发表于 2023-1-1 17:03:50

求教一个获取EXCEL单元格的问题【已解决】

本帖最后由 zhaoxt 于 2023-1-2 09:59 编辑

假设我LISP里已经获取了这活动的sheet,如何用代码得到如图里的(3B3)这个值。查了好久资料找不到办法。望指点

ssyfeng 发表于 2023-1-1 18:31:31

试试这个,获取A1单元格的值:
(vlax-variant-value
        (vlax-get-property
                (vlax-get-property
                        (vlax-get-property
                                (vlax-get-property (vlax-get-object "Excel.Application") 'ActiveWorkbook)
                                'ActiveSheet
                        )
                        'range
                        "A1"
                )
                'value2
        )
)

zhaoxt 发表于 2023-1-1 18:35:49

ssyfeng 发表于 2023-1-1 18:31
试试这个,获取A1单元格的值:
(vlax-variant-value
        (vlax-get-property


感谢!可能是我没表达清楚,我的意思是如何判断已经填写的区域,好在紧接着的未填的单元格开始继续填写。

liuhe 发表于 2023-1-1 19:32:40

zhaoxt 发表于 2023-1-1 18:35
感谢!可能是我没表达清楚,我的意思是如何判断已经填写的区域,好在紧接着的未填的单元格开始继续填写。

空值就是没有填写。(setq *xlapp*        (vlxls-app-open        fileid NIL        )
                   bookname        (vlxls-get-property *xlapp* "Application.ActiveWorkbook.Name"        )
                   sheetnamelst        (vlxls-sheet-get-all *xlapp*)
                   sheetname (car sheetnamelst)
                   rangid        (vlxls-range-getID(vlxls-sheet-get-usedrange *xlapp* sheetname))
             )

这是我写的,其中userdrange就是使用区域。这个使用可能是空值,但是被设置了线宽也算是使用区域

zhaoxt 发表于 2023-1-1 20:00:13

liuhe 发表于 2023-1-1 19:32
空值就是没有填写。(setq *xlapp*        (vlxls-app-open        fileid NIL        )
                   bookname        (vlxls-get-property *x ...

十分感谢。但我还是没达到目的。你的这个代码确实能得到一个矩形区域。确切的说在我这个表格里可以得到"A1:B3"这个区域。但这只是我看到表格才知道这确切的值。问题是程序得到这个range,如何能从range里提取出行和列的具体数值呢?

和尚777 发表于 2023-1-2 08:49:34

(setq e(vlax-get-object "excel.application"))
(setq s(vlax-get-property e "activesheet"))
(setq r1(vlax-get-property S "range" "b65536"))
(setq r2(vlax-get-property r1 "end" -4162))
(setq r3(vlax-get-property r2 "offset" 1 0))
(vlax-get-property r3 "address" nil nil nil)

zhaoxt 发表于 2023-1-2 09:22:34

和尚777 发表于 2023-1-2 08:49
(setq e(vlax-get-object "excel.application"))
(setq s(vlax-get-property e "activesheet"))
(setq r1 ...

试了下,你这个可以!非常感谢!学到了
页: [1]
查看完整版本: 求教一个获取EXCEL单元格的问题【已解决】