编码问题导出信息au
大家好。。。我离开这个网站已经很长时间了,但我希望还有几张热门照片:-)
我的任务是编写一个程序,从AutoCAD中提取属性并将其自动导出到excel中,虽然我的程序可以运行,但在将信息推送到excel之前,我无法让它设置活动工作表。相关代码片段如下。。。。
(vl-load-com)
(setq tlbfile (findfile "C:\\Program Files\\Microsoft Office 15\\root\\office15\\Excel.exe"))
(vlax-import-type-library :tlb-filename tlbfile :methods-prefix "msxl-" :properties-prefix "msxl-" :constants-prefix "msxl-")
(setq xfile "c:\\attext_test.xls")
(cond
((setq fn (findfile xfile))
(cond
((setq appsession (vlax-get-or-create-object "Excel.Application"))
(vlax-invoke-method (vlax-get-property appsession 'workbooks) 'open fn)
(vla-put-visible appsession 0)
)
)
)
(t (alert (strcat "nCannot locate source file: " xfile)))
)
(setq xlapp appsession)
(msxl-Activate (vla-Item (msxl-Get-WorkSheets xlapp) "Instrumentation"))
(setq rng (msxl-get-activesheet xlapp))
最后一行的第二行应该将活动页面设置为excel文件中的“Instrumentation”,但它没有。
谁能看出我做错了什么?我将发布整个程序供人们使用,只要我把这个排序(加上下一个程序,将信息从excel推回到autocad属性)
致以最诚挚的问候和感谢
太空猪62 我做这件事已经十年多了,我非常讨厌类型库,所以避开了它们。也许您可以根据需要修改此代码段,我已将我的xl\U应用程序替换为您的(xlapp),并将您的工作表名称插入第一行
(setq activeSheet (vl-catch-all-apply 'vlax-get-property (list (vlax-get-property xlapp "Sheets") "Item" "Instrumentation")))
(if (not (vl-catch-all-error-p activeSheet)) ;if worksheet found
(vlax-invoke-method activeSheet "Activate") ;set it as activesheet
(setq activeSheet nil)
)
嗨,德拉诺
非常感谢您的帮助-我明天会在工作中试用,一切顺利。我会在所有程序都经过测试后尽快为大家发布完整的程序-和您一样,我已经多年没有做过任何主要的编程了(从那时起我一直在使用Revit MEP)-我在2006年编写并发布了原件。。。。。这些年都到哪里去了?!?
顺致敬意,
太空猪62 请阅读代码发布指南,并将您的代码包含在代码标签中。
Your Code Here=
Your Code Here
只是好奇——为什么?
使用类型库有什么缺点吗?或者你只是讨厌自定义命名的属性/方法/事件?
该代码在三个版本的Excel中使用,每个版本都有自己的类型库IIRC。我发现这是一场噩梦:哎哟:
页:
[1]