VFP中导入EXCEL表时提示找不到EXCEL.APPLICATION类定义,应如何解决?
在VFP8.0表单的命令框中设计了将EXCEL表数据导入DBF表的功能,但在执行命令导入EXCEL表时却提示“找不到EXCEL.APPLICATION类定义”,所使用的命令程序是:
M=getfile("xls")
COPY FILE "&M" TO D:\TEST.XLS
oExcel=CREATEOBJECT('Excel.application')
oExcel.Workbooks.Open("D:\TEST.XLS")
R=oExcel.SHEETS(1).UsedRange.ROWS.COUNT
C=oExcel.SHEETS(1).UsedRange.COLUMNS.COUNT
oExcel.Cells(R,C).Select
oExcel.DisplayAlerts=.F.
oExcel.ActiveWorkbook.SaveAs('D:\NewTest.xls',39)
oExcel.ActiveWorkbook.saved=.t.
oExcel.Workbooks.close
oExcel.quit
RELEASE oExcel
IMPORT FROM D:\NewTest.xls TYPE XL8
ERASE D:\NewTest.xls
ERASE D:\TEST.xls
在大部分电脑上运行上述程序时都没有出现故障,但在一台电脑上却出现了这样的故障。
敬请电脑专家分析是何原因,如何解决?不胜感激!
[解决办法]
这台电脑可能没有安装 Excel
[解决办法]
没有安装 Excel 或 Excel 版本高于 2003
[解决办法]
没有安装OFFICE OR 安装的精简版之类的?
[解决办法]
在执行前检测一下是不是安装了excel及版本是不是正确的:
oExcel=Createobject('Excel.application')If Vartype(oExcel)=="O" If Val(oExcel.Version)=11.0 &&11.0表示excel的版本号 M=Getfile("xls") Copy File "&M" To D:\TEST.Xls* oExcel=Createobject('Excel.application') oExcel.Workbooks.Open("D:\TEST.XLS") R=oExcel.SHEETS(1).UsedRange.Rows.Count C=oExcel.SHEETS(1).UsedRange.Columns.Count oExcel.Cells(R,C).Select oExcel.DisplayAlerts=.F. oExcel.ActiveWorkbook.SaveAs('D:\NewTest.xls',39) oExcel.ActiveWorkbook.saved=.T. oExcel.Workbooks.Close oExcel.Quit Release oExcel Import From D:\NewTest.Xls Type Xl8 Erase D:\NewTest.Xls Erase D:\TEST.Xls EndifEndif
[解决办法]
多数情况是安装了精简版,或者注册表出了问题
找到 execl 的 exe 文件,让它自己重新检测并修复一次
运行 cmd,转到 excel.exe 所在文件夹,执行 excel /RegServer,修复过程中可能需要你插入安装盘,或者指出安装文件所在目录
[解决办法]
Try oExcel=Createobject('Excel.application') llSuccess=.T.Catch To oError Messagebox(oError.Message,48,'信息提示') llSuccess=.F.EndtryIf llSuccess M=Getfile("xls") Copy File "&M" To D:\TEST.Xls oExcel.Workbooks.Open("D:\TEST.XLS") R=oExcel.SHEETS(1).UsedRange.Rows.Count C=oExcel.SHEETS(1).UsedRange.Columns.Count oExcel.Cells(R,C).Select oExcel.DisplayAlerts=.F. oExcel.ActiveWorkbook.SaveAs('D:\NewTest.xls',39) oExcel.ActiveWorkbook.saved=.T. oExcel.Workbooks.Close oExcel.Quit Release oExcel Import From D:\NewTest.Xls Type Xl8 Erase D:\NewTest.Xls Erase D:\TEST.XlsElse Messagebox('创建 Excel 对象失败!',48,'信息提示')Endif