Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

[5分]使用ADO将数据集导出为Excel,导出前先检测Excel版本的代码如何写?

恐龙的传人  发表于:2021-04-03 08:01:02  
复制

办公室使用的office2003版本用习惯了,但家里笔记本装了2010版(小朋友经常要接学校老师发的ppt,word学习),导致每次导出Excel文件后,都需要重新保存一下。

想写一个代码检测Excel版本,根据版本不同执行不同的Excel模版文件和文件类型。

请问如何检测Excel版本?

 

Top
西出阳关无故人 发表于:2021-04-03 21:08:10

给你一个函数:

Public Function GetExcelVersion() As Variant
    Dim objExcelApp As Object
    On Error GoTo ER
    Set objExcelApp = CreateObject("Excel.Application")
    GetExcelVersion = objExcelApp.Version
    Set objExcelApp = Nothing
    Exit Function
ER:
    MsgBox "发生错误:" & Err.Number & "," & Err.Description, 64
    GetExcelVersion = Null
    Set objExcelApp = Nothing
End Function



恐龙的传人 发表于:2021-04-10 10:22:44

谢谢楼上。

实际上我查阅了许多资料后,也比较单的写了一个。



Public Function CheckExcel() As Boolean '检测电脑系统所装EXCEL版本,若为2003及以下,则验证为正确
  
 Dim objExcelApp As Object
   Set objExcelApp = CreateObject("Excel.Application") '调用Excel并检测版本号

  If Val(objExcelApp.Version) <= 11 Then CheckExcel = True '版本号小于或等于11则是2003版本,大于11则是2007及以上版本
  
 Call objExcelApp.Quit
  
 Set objExcelApp = Nothing '退出Excel程序 为防止导出excel文件不能正常打开,请在启动代码后先校验版本,再赋予版本对应的模版名及文件名后缀,避免多次检测

End Function
在导出Excel按扭的事件里,先定义模版文件和输出文件分别为T和S,再检测Excel版本,若为2003及以下,则T=“.xlt”,S=".xls",若为2007及以上,则定义分别为.xltx  ,.xlsx


测试成功并运用啦。



总记录:2篇  页次:1/1 9 1 :