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


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

主题:[求助]用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 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/9 9:21:00 [只看该作者]

1、明显是路径有错,你弹出路径看一下;

 

2、不能重复打开excel,用vba打开以后,必须关闭,才能再次打开。


 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/9 9:49:00 [只看该作者]

 那就不可能,例子发上。


 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/9 14:06:00 [只看该作者]

 看了一下,你的这个a1文件,我打开有问题,提示错误,而且乱码,你尝试重装office吧

 回到顶部
美女呀,离线,留言给我吧!
cherryjing
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/10/9 14:29:00 [只看该作者]

 你的后缀名,本身就是xlsx的,不能直接改成xls啊,如果要改成xls,就必须另存为,选择97-2003格式。

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


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

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

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