wscqb 发表于 2011-5-27 09:06:55

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

保存excel文件,在本机上都能调试通过,相同的代码在别的机子上就不能通过!!
每次都是在   ObjExcel.Save SavePath报错,说类的方法不正确
具体代码如下,请高手能指点下,郁闷死了:Q
                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

风雪夜归人 发表于 2011-5-27 10:50:11

路径问题?或者是E:\test.xls已经存在了?
office版本不同?

wscqb 发表于 2011-5-27 14:01:58

我上面的代码中有对文件是否存在的处理,如果存在就先删除,所以也不是路径和文件的问题
还有一个情况是这样:我把这代码段放到我软件脚本中去运行,也是报错,软件运行的环境都没有变(还是我自己的机子)
所以这个也不是office的版本不同的问题

哎,现在头都大了,被这个问题卡了两天了:dizzy:

lyscser 发表于 2011-5-27 14:59:09

本帖最后由 lyscser 于 2011-5-27 15:00 编辑

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


      Set fObject = CreateObject("Scripting.FileSystemObject")      
      If         Not fObject.FileExists(appointedFile) Then
                  Repor micFail,"参数文件不存在:",appointedFile
                  Set fObject = Nothing
      End If
      
      If      fObject.FileExists(tmpName) Then
                  fObject.DeleteFile(tmpName)
      End If
      
      Set ExcelApp = CreateObject("Excel.Application")
      ExcelApp.Application.Visible = False
      ExcelApp.DisplayAlerts = False
      Set newBook = ExcelApp.Workbooks.Open (appointedFile,False,True)--只读模式
      newBook.Worksheets(appointedSheet).Copy
      Set tempBook = ExcelApp.ActiveWorkbook      
      tempBook.SaveAs tmpName,1--保存成xls格式
      Set tempBook = Nothing
      ExcelApp.Quit
      Set ExcelApp = Nothing
      DataTable.AddSheet newSheet
      DataTable.ImportSheet tmpName,appointedSheet,newSheet
      
      If         fObject.FileExists(tmpName) Then
                  fObject.DeleteFile(tmpName)
      End If

wscqb 发表于 2011-5-27 17:05:56

但是使用ObjExcel.SaveAs SavePath系统提示
ObjExcel这个对象不支持这样的方法

wscqb 发表于 2011-5-27 17:08:55

而且我有几次调试的时候,这个路径下文件是空的,使用save也是能保存文件的
所以我想应该不是你说的那个问题

lyscser 发表于 2011-5-28 15:30:35

tempBook.SaveAs tmpName,1--保存成xls格式

wscqb 发表于 2011-5-30 14:50:55

还是不行,我怀疑,应该上我上面的那段代码在我软件运行过程中没有真正得到那个excel的对象,所以在对该对象进行操作的时候就会出错。
但是为什么单独就这块代码段就可以运行通过,而且也是能正确执行相关操作呢

非常的崩溃:'(

wscqb 发表于 2011-5-30 15:01:31

{:4_93:}自己顶一下,高手帮忙啊

wscqb 发表于 2011-5-30 16:41:14

:'(:'(
有高手出手相救没

ljj149850508 发表于 2011-6-7 16:45:50

本帖最后由 ljj149850508 于 2011-6-7 17:55 编辑

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

sunnyswu 发表于 2011-6-8 21:58:32

set ObjExcel=GetObject("","excel.Application")
修改为 createobject()
因为这存在一个你本机打开了excel进程的问题,而其他机子没有打开此进程。
猜测啊 可以实验下
页: [1]
查看完整版本: 保存excel文件,在本机上都能调试通过,相同的代码在别的机子上就不能通过!!