Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2077|回复: 1

[已解决]把工作表单独导出到工作簿时,高低版本导致乱码

[复制链接]
发表于 2016-3-21 14:52 | 显示全部楼层 |阅读模式
本帖最后由 蝶·舞 于 2016-3-22 13:20 编辑

我是在2003的基础上编写把当前表页导出生成单独的工作簿(自动默认为.xls后缀),然后这个工作用EXCEL2003打开执行和生成的文件都没有问题。
但当我用EXCEL2010版打开这个文件,再执行代码时,会出现这个提示
快照1.jpg
然后我根据提示精通相应的选项处进行处理,处理如下
快照2.jpg
把上面界面中的方框全部去勾后,代码能正常执行,也能生成一个后缀为xls的表格文件
不过问题却出现在打开这个生成的文件时,用2003版打开,提示如下
快照3.jpg
点击“确定”后,文件一片乱码

用2010版打开,提示如下
快照4.jpg
点击“是”后,内容能正常显示。
为什么2003文件的代码用2010版打开,生成一个2003的文件,却发生乱码情况?代码应该如何改动?

另把原表和我生成的表格发上来
导出.zip (30.56 KB, 下载次数: 7)
发表于 2016-3-22 10:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 adders 于 2016-3-21 22:34 编辑

Excel 2007后有新文件格式出现: ".xlsx", ".xlsm",".xlsb"。"SaveAs"在03以前只有一种文件格式,即默认的".xls",所以在03上运行SaveAs时不需要指定格式,但如果在07以上版本运行时,需要加上FileFormat参数。

不管在03还是在更高版本Excel上运行SaveAs时,如果总是需要保存为".xls"格式,那么做以下调整可生成无乱码(格式正确)的".xls"文件:

先把以下加入标准模块下(standard module):

Public Sub GenExcel2003(FullFileName)
    If Val(Application.VERSION) < 12 Then
       ActiveWorkbook.SaveAs FullFileName
    Else
       ActiveWorkbook.SaveAs FullFileName, FileFormat:=56
    End If
End Sub

然后,在原来的代码中运行SaveAs的行中进行修改:
如,原先是:.SaveAs Filename:=fname & "xls",可改成:Call GenExcel2003 fname & "xls"

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 00:18 , Processed in 0.258485 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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