乐筑天下

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

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

[复制链接]

19

主题

35

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

vpduj22rgr5.PNG

vpduj22rgr5.PNG


kgre0ntjtv0.PNG

kgre0ntjtv0.PNG

回复

使用道具 举报

7

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2017-9-26 17:46:35 | 显示全部楼层
以前能用吗?在什么条件下?你最近升级过Office吗?
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2017-9-26 18:26:59 | 显示全部楼层
哪一行抛出错误
自从你'计算excel工作表行时遇到问题,这些问题可能出现在
  1. GetRowCnt

sub,它可能会对图纸行进行计数并将其分配给
  1. iNumRws
自从你'重新使用Excel 2016,您可能有32767行左右,这是整数变量的限制,如
  1. iNumRws
正在声明,因此您可能只需要声明
  1. Dim iNumRws As long
回复

使用道具 举报

19

主题

35

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

7

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2017-9-29 11:08:03 | 显示全部楼层
我认为问题在于AutoCAD 2013仍然使用32位VBA,Excel 2016使用64位VBA。您需要升级AutoCAD。
回复

使用道具 举报

19

主题

35

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
111
发表于 2017-9-29 11:32:24 | 显示全部楼层
或者Excel 2016文件是.xlsx而不是.xls
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 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中是否会有不同的编码
谢谢你的帮助
文斯
回复

使用道具 举报

12

主题

175

帖子

77

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 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”)
。。。
回复

使用道具 举报

7

主题

100

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2017-9-30 01:28:23 | 显示全部楼层
那是什么
  1. iNumRws = GetRowCnt
做什么
似乎统计了一些excel工作表行数,但它's置于
  1. '''''''......Gets Excel Sheet
代码部分
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-4-19 21:37 , Processed in 1.575741 second(s), 74 queries .

© 2020-2025 乐筑天下

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