乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Jasenc

[编程交流] 打开excel排列的宏

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:29:24 | 显示全部楼层
 
这很奇怪,也许可以试试这个:
  1. ^C^C(startapp "explorer" (findfile "J:/General Engineering/AutoCAD/Autocad/Lisp Routine 2012/SteelUK001202.xls"))
回复

使用道具 举报

7

主题

22

帖子

15

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:34:06 | 显示全部楼层
李,
 
这就像是一种享受,
非常感谢你的帮助!!!!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:37:26 | 显示全部楼层
不客气!
显然,Explorer应用程序只能接受带有反斜杠分隔符的文件路径。
回复

使用道具 举报

7

主题

22

帖子

15

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:41:43 | 显示全部楼层
李,我只是太挑剔了。这个我试图打开的xls文件,可以用你帮我解决的代码打开,唯一的问题是它不能用excel打开。它是通过浏览器打开的。有没有办法直接用excel打开它?
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:45:39 | 显示全部楼层
这里是Terry Miller的GETEXCEL代码的一段代码,您可以在这里找到完整的副本。它工作得很好,还有很多其他用途。特里很友善地与全世界分享了这一点,为此我们向他致以衷心的感谢。
 
注意:如果不自动加载,则需要在代码中添加以下行。把它放在这段代码中的(defun)语句之前,它会为您做这件事。
 
  1. (vl-load-com)

 
 
  1. ;-------------------------------------------------------------------------------
  2. ; OpenExcel - Opens an Excel spreadsheet
  3. ; Arguments: 3
  4. ;   ExcelFile$ = Excel filename or nil for new spreadsheet
  5. ;   SheetName$ = Sheet name or nil for not specified
  6. ;   Visible = t for visible or nil for hidden
  7. ; Syntax examples:
  8. ; (OpenExcel "C:\\Temp\\Temp.xls" "Sheet2" t) = Opens C:\Temp\Temp.xls on Sheet2 as visible session
  9. ; (OpenExcel "C:\\Temp\\Temp.xls" nil nil) = Opens C:\Temp\Temp.xls on current sheet as hidden session
  10. ; (OpenExcel nil "Parts List" nil) =  Opens a new spreadsheet and creates a Part List sheet as hidden session
  11. ;-------------------------------------------------------------------------------
  12. (defun OpenExcel (ExcelFile$ SheetName$ Visible / Sheet$ Sheets@ Worksheet)
  13. (if (= (type ExcelFile$) 'STR)
  14.    (if (findfile ExcelFile$)
  15.      (setq *ExcelFile$ ExcelFile$)
  16.      (progn
  17.        (alert (strcat "Excel file " ExcelFile$ " not found."))
  18.        (exit)
  19.      );progn
  20.    );if
  21.    (setq *ExcelFile$ "")
  22. );if
  23. (gc)
  24. (if (setq *ExcelApp% (vlax-get-object "Excel.Application"))
  25.    (progn
  26.      (alert "Close all Excel spreadsheets to continue!")
  27.      (vlax-release-object *ExcelApp%)(gc)
  28.    );progn
  29. );if
  30. (setq *ExcelApp% (vlax-get-or-create-object "Excel.Application"))
  31. (if ExcelFile$
  32.    (if (findfile ExcelFile$)
  33.      (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Open ExcelFile$)
  34.      (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add)
  35.    );if
  36.    (vlax-invoke-method (vlax-get-property *ExcelApp% 'WorkBooks) 'Add)
  37. );if
  38. (if Visible
  39.    (vla-put-visible *ExcelApp% :vlax-true)
  40. );if
  41. (if (= (type SheetName$) 'STR)
  42.    (progn
  43.      (vlax-for Sheet$ (vlax-get-property *ExcelApp% "Sheets")
  44.        (setq Sheets@ (append Sheets@ (list (vlax-get-property Sheet$ "Name"))))
  45.      );vlax-for
  46.      (if (member SheetName$ Sheets@)
  47.        (vlax-for Worksheet (vlax-get-property *ExcelApp% "Sheets")
  48.          (if (= (vlax-get-property Worksheet "Name") SheetName$)
  49.            (vlax-invoke-method Worksheet "Activate")
  50.          );if
  51.        );vlax-for
  52.        (vlax-put-property (vlax-invoke-method (vlax-get-property *ExcelApp% "Sheets") "Add") "Name" SheetName$)
  53.      );if
  54.    );progn
  55. );if
  56. (princ)
  57. );defun OpenExcel
回复

使用道具 举报

7

主题

22

帖子

15

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:48:22 | 显示全部楼层
感谢您的回复,
因此,当它声明ExcelFile$I时,可以用J替换它:\\General Engineering\\AutoCAD\\Autocadlisp\\Lisp例程2013\\titleblock。xls对吗?
如果我不希望它在excel中打开特定的工作表,我可以从这个例程中删除什么?
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:51:56 | 显示全部楼层
是的,这是正确的,但是这个例程的调用就像他在代码头中展示语法示例一样。至于第二个问题,只需在他的语法示例中使用第二个示例。这会将文件打开到默认工作表,该工作表将是上次保存时激活的最后一张工作表。
 
有很多其他方法可以在运行中创建新文件,等等。。。但我通常使用。NET来完成这些任务。VLISP可以很好地使用它,但它不是最快速的方法,而且它也仅限于安装了AutoCAD的用户。每个座位5000美元(我们刚刚支付了2013年的年度订阅税和销售税),这是一个昂贵的选择。您可以免费下载新的Visual Studio 2012 Express。。。。我喜欢这个价格。。。在将Excel和AutoCAD连接在一起方面做得更多。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 07:55:32 | 显示全部楼层
您也可以使用Excel命令行开关。
 
下面是一个快速示例,演示如何确定要使用的shell命令:
  1. (defun _excelopen ( fn / id )
  2.    (if
  3.        (and
  4.            (setq fn (findfile fn))
  5.            (setq id (vl-registry-read (strcat "HKEY_CLASSES_ROOT\" (vl-filename-extension fn))))
  6.            (setq id (vl-registry-read (strcat "HKEY_CLASSES_ROOT\" id "\\shell\\Open\\command")))
  7.        )
  8.        (if (vl-string-search "%1" id)
  9.            (startapp (vl-string-subst fn "%1" id))
  10.            (startapp (strcat id " "" fn """))
  11.        )
  12.    )
  13. )

不过,如果您知道Excel可执行文件的路径,可以直接在startapp表达式中使用该路径。
回复

使用道具 举报

7

主题

22

帖子

15

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 07:57:15 | 显示全部楼层
谢谢你们,非常感谢你们的帮助
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 09:55 , Processed in 0.444664 second(s), 68 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表