Vince 发表于 2017-9-26 14:26:56

VBA代码在定义Excel文件时出错

大家好,我们有VBA代码,允许用户选择Excel进行处理,然后读取Excel文件并在AutoCAD中绘制图形列明细表 现在,当我们选择Excel文件时,代码崩溃,并给出以下两条错误消息之一
此版本使用在Windows 7 64位工作站上运行的AutoCAD 2013……和Excel 2016
这是选择Excel文件的代码区域
[代码如果任何人都能看一看,看看他们的专业知识是否能够识别问题或就如何解决困难提出建议,我们将不胜感激
谢谢你的合作,文斯



57gmc 发表于 2017-9-26 17:46:35

以前能用吗?在什么条件下?你最近升级过Office吗?

RICVBA 发表于 2017-9-26 18:26:59

哪一行抛出错误
自从你'计算excel工作表行时遇到问题,这些问题可能出现在GetRowCnt
sub,它可能会对图纸行进行计数并将其分配给iNumRws 自从你'重新使用Excel 2016,您可能有32767行左右,这是整数变量的限制,如iNumRws 正在声明,因此您可能只需要声明Dim iNumRws As long

Vince 发表于 2017-9-29 11:02:50

是的,使用Excel 2013工作正常……然后office迁移到Microsoft office 2016/Excel 2016,一些工程师开始出现问题 我尽可能地拖延,但最终不得不安装Excel 2016;在Microsoft Visual Basic编辑器中,我将Microsoft Excel 16.0对象库添加到引用中,但现在我收到了下面附加的错误消息
如果你对如何解决这些困难有任何想法或建议,请告诉我
提前谢谢你,文斯

57gmc 发表于 2017-9-29 11:08:03

我认为问题在于AutoCAD 2013仍然使用32位VBA,Excel 2016使用64位VBA。您需要升级AutoCAD。

Vince 发表于 2017-9-29 11:32:24

或者Excel 2016文件是.xlsx而不是.xls

n.yuan 发表于 2017-9-29 12:57:53

我认为80%的Excel 2016 VBA代码与Excel 2013 VBA代码相同 我们正在32位shell中运行Excel 2016 我们打算在大约2个月内升级,但是,在升级之前,我需要让AutoCAD 2013 VBA代码正常工作 我怎样才能做到这一点&nbsp 以下是如何获取Excel工作簿对象的代码示例 设置xlWorkBook=GetObject(lblPath.xls)&nbsp 在VBA Excel 2016中是否会有不同的编码
谢谢你的帮助
文斯

RICVBA 发表于 2017-9-29 15:43:54

我没有安装MS Office2016,所以,猜猜看
由于您的AutoCAD VBA代码通过COM out process automation打开Excel应用程序,正如其中一个回复所建议的那样,AutoCAD 2013VBA和Excel是32位还是64位并不重要
在我看来,我认为这一行有问题(正如您已经指出的):设置xlWorkBook=GetObject(lblPath.xls)
因为当您将文件名传递给GetObject()方法时,它将检查操作系统(Windows)以确定哪个应用程序与文件关联(根据文件名和扩展名)。通常,一种文件类型可以与多个应用程序关联。当Windows确定应用程序时,它会尝试打开它。由于最新的Excel应用程序与许多不同的文件类型相关(*.xlsx,*.xls,*.csv,…),它可能会因某些原因出错
你应该用更确定的方式做事情,像这样:
将excel作为excel。应用程序以Excel格式显示。工作簿以Excel格式显示。工作表'在错误恢复时首先获取Excel应用程序下一步设置Excel=GetObject(,“Excel.application”)
如果excel什么都不是,那么;设置excel=CreateObject(“excel.Application”)
如果excel为空,则结束;MsgBox“;无法连接到Excel应用程序&引用
;退出Sub,如果
&039' 现在已经运行了Excel,请显式打开工作簿/工作表,设置wk=Excel.Workbooks。打开(lblPath.xls)
Set sh=wk.Sheets(“xxxx”)
。。。

57gmc 发表于 2017-9-30 01:28:23

那是什么iNumRws = GetRowCnt 做什么
似乎统计了一些excel工作表行数,但它's置于'''''''......Gets Excel Sheet 代码部分
页: [1]
查看完整版本: VBA代码在定义Excel文件时出错