51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2717|回复: 11
打印 上一主题 下一主题

[原创] 保存excel文件,在本机上都能调试通过,相同的代码在别的机子上就不能通过!!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-5-27 09:06:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
保存excel文件,在本机上都能调试通过,相同的代码在别的机子上就不能通过!!
每次都是在   ObjExcel.Save SavePath  报错,说类的方法不正确
具体代码如下,请高手能指点下,郁闷死了
                set ObjExcel=GetObject("","excel.Application")
                Set fso=CreateObject("scripting.FileSystemObject")
                ObjExcel.Visible=false
                SavePath="E:\test.xls"     
                                                                    '导出的历史数据存储路径
                    If fso.FileExists(SavePath)=True Then
                        fso.DeleteFile(SavePath)
                 end if
                ObjExcel.Save SavePath
                ObjExcel.quit
                Set fso=nothing
                Set ObjExcel=nothing
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2011-5-27 10:50:11 | 只看该作者
路径问题?或者是E:\test.xls已经存在了?
office版本不同?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-5-27 14:01:58 | 只看该作者
我上面的代码中有对文件是否存在的处理,如果存在就先删除,所以也不是路径和文件的问题
还有一个情况是这样:我把这代码段放到我软件脚本中去运行,也是报错,软件运行的环境都没有变(还是我自己的机子)
所以这个也不是office的版本不同的问题

哎,现在头都大了,被这个问题卡了两天了  
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-5-27 14:59:09 | 只看该作者
本帖最后由 lyscser 于 2011-5-27 15:00 编辑

在本机可能是删除失败了才导致运行成功的,Save是覆盖保存,应该是应用于保存已经打开文件的修改,新存是SaveAs的吧
具体函数参见下面这个(截取一个函数的一部分,注意注释):


  1.         Set fObject = CreateObject("Scripting.FileSystemObject")        
  2.         If         Not fObject.FileExists(appointedFile) Then
  3.                   Repor micFail,"参数文件不存在:",appointedFile
  4.                   Set fObject = Nothing
  5.         End If
  6.         
  7.         If        fObject.FileExists(tmpName) Then
  8.                   fObject.DeleteFile(tmpName)
  9.         End If
  10.         
  11.         Set ExcelApp = CreateObject("Excel.Application")
  12.         ExcelApp.Application.Visible = False
  13.         ExcelApp.DisplayAlerts = False
  14.         Set newBook = ExcelApp.Workbooks.Open (appointedFile,False,True)--只读模式
  15.         newBook.Worksheets(appointedSheet).Copy
  16.         Set tempBook = ExcelApp.ActiveWorkbook        
  17.         tempBook.SaveAs tmpName,1--保存成xls格式
  18.         Set tempBook = Nothing
  19.         ExcelApp.Quit
  20.         Set ExcelApp = Nothing
  21.         DataTable.AddSheet newSheet
  22.         DataTable.ImportSheet tmpName,appointedSheet,newSheet
  23.         
  24.         If         fObject.FileExists(tmpName) Then
  25.                   fObject.DeleteFile(tmpName)
  26.         End If
复制代码
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2011-5-27 17:05:56 | 只看该作者
但是使用  ObjExcel.SaveAs SavePath  系统提示
ObjExcel这个对象不支持这样的方法
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2011-5-27 17:08:55 | 只看该作者
而且我有几次调试的时候,这个路径下文件是空的,使用save也是能保存文件的
所以我想应该不是你说的那个问题
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2011-5-28 15:30:35 | 只看该作者
tempBook.SaveAs tmpName,1--保存成xls格式
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2011-5-30 14:50:55 | 只看该作者
还是不行,我怀疑,应该上我上面的那段代码在我软件运行过程中没有真正得到那个excel的对象,所以在对该对象进行操作的时候就会出错。
但是为什么单独就这块代码段就可以运行通过,而且也是能正确执行相关操作呢

非常的崩溃
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2011-5-30 15:01:31 | 只看该作者
自己顶一下,高手帮忙啊
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2011-5-30 16:41:14 | 只看该作者

有高手出手相救没
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2011-6-7 16:45:50 | 只看该作者
本帖最后由 ljj149850508 于 2011-6-7 17:55 编辑

你的EXCLE进程没有关闭。。
fso.close()
创建了文件流,不去关闭。。该进程一直存在。。导致报错。。
回复 支持 反对

使用道具 举报

该用户从未签到

12#
发表于 2011-6-8 21:58:32 | 只看该作者
set ObjExcel=GetObject("","excel.Application")
修改为 createobject()
因为这存在一个你本机打开了excel进程的问题,而其他机子没有打开此进程。
猜测啊 可以实验下
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-26 14:07 , Processed in 0.084693 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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