从ACAD运行Excel
我正在从绘图标题栏中读取块属性并将其转储到Excel中。我使用以下代码:dim Excel as Excel.Application '早期绑定
Set Excel = CreateObject(“Excel.Application”)
Excel.visible = true
麻烦的是,它启动了 Excel 的两个实例,一个可见,一个不可见。每次运行后,我必须使用任务管理器来终止静默实例。
我不会从程序中结束 Excel 会话。可见语句为其提供了焦点,因此当 ACAD 中的 VBA 程序结束时,Excel 文件将打开供用户摆弄和保存。
我做错了什么?
**** Hidden Message ***** 试试这个
Dim Excel As New Excel.Application 'early binding
Excel.Visible = True
找到了!!!!
似乎不允许隐式引用对象的方法和属性。它们必须是明确的。虽然这看起来很蠢,但它奏效了。我一直在用with/endwith。
事实证明,根据Microsoft的说法,每个对属性的引用,如果没有对其对象的显式引用,都是在启动不同的Excel实例,而不是dim语句中的实例!MS称之为“不合格电话”。所以当我发布Excel时,我只是发布了我已经启动的实例。另一个由VB启动的实例不在我的控制之下。
下面是知识库文章:
http://support . Microsoft . com/kb/178510/
下面是最终代码的一部分:
I = DWG count ' rows
j = issue count+5 ' columns
Dim Excel As Excel。应用程序
将帐簿显示为Excel。工作簿
将工作表显示为Excel。工作表
Set Excel = CreateObject(" Excel。application ")
Set Book = Excel . workbooks . add
Set Sheet = Excel。Sheets("sheet1")
'将数组移动到工作表
Sheet。范围(表。单元格(1,1),工作表。细胞(I,j))。Value = RevisionTable '创建页眉工作表。行(“1:1”)。插入Shift:=xlDown
工作表。行(“1:1”)。RowHeight = 25
工作表。单元格(1,1)。Value = "SHEET"
工作表。单元格(1,2)。Value = "TITLE"
工作表。单元格(1,3)。Value = "SCALE"
工作表。单元格(1,4)。Value = "当前问题"
表。单元格(1,5)。Value = "当前日期"
工作表。列(“A:IV”)。“自动调整”设置可变列宽。visible = True Excel。user control = True
Set Excel = Nothing
这是一个更大的程序的一部分,该程序读取近500个工作表,获取标题块和修订块,计算出多个修订中的哪个是最新的,将所有内容添加到一个变量数组(“RevisionTable”)中,并将其发送到Excel。
一个有趣的事实是“sheet . range . value = revision table”上面的代码行。这是一个很好的特性,一行代码就可以将整个VB变量数组移动到电子表格中。不需要循环。速度快得惊人。阅读500张表格并生成电子表格需要大约19秒,主要是因为没有保存。
页:
[1]