51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5661|回复: 6
打印 上一主题 下一主题

[资料] QTP操作Excel的一个错误:"Excel 无法打开文件......"

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-7-31 17:18:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在测试框架很大的情况下,一个小错误都可能花掉你几个小时的时间去找问题,今天我就遇到了,大家如果以后遇到可以少花点时间了,在一些函数中创建了SQL链接,函数中又调用

了其他函数,其他函数又需要打开些文件进行操作,结果一直报错,一步步跟踪调试找到了原因,EXCEL重复打开不会出错、重复创建链接也不

会出错,但如果创建了链接没释放又要打开此文件就会报错。

先看一段代码:
'赋值
ExcelFileFullName = "C:\test.xlsx"
sheet = "test"
'创建链接
Set RTCconn= createobject("ADODB.Connection")
RTCconn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="&ExcelFileFullName&";Extended Properties=Excel 8.0"
sql= "SELECT * FROM ["&sheet&"$]"&""
Set RecSet = RTCconn.Execute(sql)
'打开EXCEL文件
Set objExcel = CreateObject("Excel.Application")
Set fExcel = objExcel.Workbooks.Open(ExcelFileFullName)

运行此段代码会报错,错误内容为“Excel 无法打开文件“test.xlsx”,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展

名与文件的格式匹配。”

此错误的原因是因为我们创建了SQL链接但没有释放,接下来又需要打开此EXCEL表格,而此EXCEL表格在创建了SQL链接后就被锁住了,再打开

就会报错,解决些问题的办法是要在打开EXCEL新把链接先关掉(RTCconn.Close)。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

7#
发表于 2009-9-5 00:35:08 | 只看该作者
楼主习惯不好,用完一个对象之后释放内存或者句柄是常识
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2009-8-28 21:55:48 | 只看该作者
哈,学习了,谢谢lz
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2009-8-28 14:19:45 | 只看该作者
呵呵,我也发现了这个现象,
重复打开(不关闭)就会报错.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-8-4 15:18:17 | 只看该作者
test.xlsx? xlsx?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-8-4 13:57:38 | 只看该作者
遇到过这个问题 初始化下Excel也可以解决的
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2009-8-4 11:53:34 | 只看该作者
受教了,楼主啥时候发布你那强大的框架呀,我可是天天都来蹲点哦
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-26 16:33 , Processed in 0.078864 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表