Foxtable(狐表)用户栏目专家坐堂 → [求助]用VBA保存的Excel报表导入错误


  共有3158人关注过本帖树形打印复制链接

主题:[求助]用VBA保存的Excel报表导入错误

美女呀,离线,留言给我吧!
cherryjing
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
[求助]用VBA保存的Excel报表导入错误  发帖心情 Post By:2014/10/9 9:04:00 [显示全部帖子]

由于项目要求的报表的特殊性,很难用FOXTABLE的EXCEL模板的办法来做,于是采用了VBA来做导出报表,为求兼容性,导出为xls格式,而当我导入该文件时,开始也用VBA的方法,可是读取单元格值的时候总是失败,如下:

Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(g_strExcelFileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(g_strExcelWookSheetName)
Dim Rg As MSExcel.Range = Ws.Range(strRg) 'strRg = "H1:H2"
Dim strValue as string = CStr(Rg.Value)
无论加不加那个CStr类型转换函数,运行到这句就会出错,没办法,我又使用
    Dim Book As New XLS.Book(g_strExcelFileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(g_strExcelWookSheetName)
方法试图读取该文件,可每当运行到第一句就出错,
图片点击可在新窗口打开查看此主题相关图片如下:1.bmp
图片点击可在新窗口打开查看
可当我把那个文件用EXCEL打开并另存为xlsx后,就可以成功读取内容,请版主指教这个问题该如何解决?我装的是office2010。
本来想把导出的文件默认后缀改成xlsx,但考虑到当最后完成发布后,由于不知道最终使用我的软件的机器是装的OFFICE的哪个版本,所以最终没改。


 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 9:05:00 [显示全部帖子]

在打开文件之前已经检查过文件存在且未被打开

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 9:46:00 [显示全部帖子]

路径看过没问题,而且肯定是关闭了的。其实那段代码是这样的:
If FileSys.FileExists(g_strExcelFileName) Then
    If FileIsOpened(g_strExcelFileName)= True Then
        MessageBox.Show("文件已经打开", "ReadFromExcel")
        return
    End If
    
    Dim Book As New XLS.Book(g_strExcelFileName)
    Dim Sheet As XLS.Sheet = Book.Sheets(g_strExcelWookSheetName)
......
end if

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 12:13:00 [显示全部帖子]

我装的是OFFICE2010,会不会和OFFICE版本有关系?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:a1.xls
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试_201410091038.zip
操作说明:
先点“...”按钮选择文件,工作表会自动列在LISTBOX里,然后选择某个工作表,再点“导入”

[此贴子已经被作者于2014-10-9 12:15:17编辑过]

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 14:23:00 [显示全部帖子]

可是我打开是OK的,而且可以另存为XLSX,我装的是OFFICE2010,是不是OFFICE版本问题?
而且用VBA打开时也没有出错,只是到读单元格时读不出来
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(g_strExcelFileName)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(g_strExcelWookSheetName)
Dim Rg As MSExcel.Range = Ws.Range(strRg) 'strRg = "H1:H2"
Dim strValue as string = CStr(Rg.Value)‘运行到这一句时才会出错
要不版主指教一下该如何取得单元格的字符串值?
[此贴子已经被作者于2014-10-9 14:54:47编辑过]

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 14:59:00 [显示全部帖子]

因为那个文件我是用VBA做的导出,在生成文件名时写的是xls,不是手工改的,你是说我用VBA保存EXCEL时就应该保存为xlsx?

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 15:01:00 [显示全部帖子]

那如果项目发布后,目标机器上是2003呢?这里会不会有问题啊?

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 15:08:00 [显示全部帖子]

我是说在项目里导出报表用的是vba来做的,那个文件是用以下代码导出的:
....
'Args(1) = "g:\a1.xls"
Dim App As New MSExcel.Application
App.Visible = False
Dim Wb0 As MSExcel.Workbook = App.WorkBooks.Open("d:\Attachments\模板.xls")
Dim Wb As MSExcel.Workbook
If FileSys.FileExists(Args(1)) Then
    Wb = App.WorkBooks.Open(Args(1))
Else
    Wb = App.WorkBooks.Add
    Wb.SaveAs(Args(1))
End If


Dim Ws0 As MSExcel.WorkSheet = Wb0.WorkSheets("设备材料表") '指定要复制的工作表
With Wb.WorkSheets
    Ws0.Copy(After:=.Item(.Count))'复制到最后面
End With
Wb0.close
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(Wb.WorkSheets.Count)
Ws.Select
...
...


 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 15:12:00 [显示全部帖子]

模板也是XLS啊

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:150 积分:1127 威望:0 精华:0 注册:2014/5/20 12:22:00
  发帖心情 Post By:2014/10/9 15:21:00 [显示全部帖子]

版主的意思是 我应该试试看把模板打开另存为97-2003格式的,再重新全部运行一遍试试?

 回到顶部
总数 11 1 2 下一页