注册 登录
编程论坛 VFP论坛

VFP操控EXCEL的一个问题

wengjl 发布于 2020-11-20 10:12, 1826 次点击
各位亲,我的电脑环境是 WIN7.0,VFP8.0,EXCEL2007。现遇到一个怪事:
10    myexcel=createobject('excel.application')  
20    MyExcel.visible=.T.   
30    Mb_excel=myexcel.workbooks.add   
40    Mb_excel.worksheets('sheet1').name='明细'
50    Mb_excel.worksheets('sheet2').name='统计'
60    FOR EACH oMyVar IN Mb_Excel.sheets
70      ? oMyVar.Name  
80    NEXT oMyVar
执行以上8句正常。  当增加以下编号为35的那一句,就有问题了 (编号是为描述问题方便,此处临时加的)
 
10    myexcel=createobject('excel.application')
20    MyExcel.visible=.T.   
30    Mb_excel=myexcel.workbooks.add
35    Mb_excel=myexcel.WorkSheets.add        &&& 新增一个工作表
40    Mb_excel.worksheets('sheet1').name='明细'
50    Mb_excel.worksheets('sheet2').name='统计'
60    FOR EACH oMyVar IN Mb_Excel.sheets
70      ? oMyVar.Name
80    NEXT oMyVar
执行到编号 40 的语句时,出错提示为: OLE 错误码 0x80020006:Unknown name

盼高手解答。谢谢!
5 回复
#2
吹水佬2020-11-20 10:28
myexcel=createobject('excel.application')
myexcel.visible=.T.   
myexcel.workbooks.add
myexcel.WorkSheets.add        &&& 新增一个工作表
myexcel.worksheets('sheet1').name='明细'
myexcel.worksheets('sheet2').name='统计'
FOR EACH oMyVar IN myexcel.sheets
    ? oMyVar.Name
ENDFOR
#3
sdta2020-11-20 10:37
Mb_excel=myexcel.workbooks.add
语法:
.Add(Template)
使用方法
https://blog.bccn.net/sdta/65850

我的理解是,在工作簿中已有工作表的情况下,才能使用下面的代码
Mb_excel=myexcel.WorkSheets.add  && 这行代码应该不符合要求吧

语法:
.Add( Before, After, Count, Type )
使用方法
https://blog.bccn.net/sdta/65849

[此贴子已经被作者于2020-11-20 10:42编辑过]

#4
wengjl2020-11-20 10:43
感谢“吹版”和“sdta”的回复!

程序中打开多个工作簿,为切换窗口,所以用变量 MB_excel 来标识
不新增工作表,执行都是正常。
新增过工作表,后面的代码 为什么 会出错呢?

[此贴子已经被作者于2020-11-20 10:44编辑过]

#5
sdta2020-11-20 11:07
myexcel=createobject('excel.application')  
MyExcel.visible=.T.   
Mb_excel=myexcel.workbooks.add  
Mb_excel1=myexcel.WorkSheets.add(,myExcel.Sheets(myExcel.Sheets.count),1,-4167)
Mb_excel.worksheets('sheet1').name='明细'
Mb_excel.worksheets('sheet2').name='统计'
FOR EACH oMyVar IN Mb_Excel.sheets
    ? oMyVar.Name  
NEXT oMyVar
#6
wengjl2020-11-20 11:08
经二位版主的回复启发,已解决问题了。
原来,新增工作表时不可使用标识变量,其他语名均可使用自己的标识变量,对同一项目中不同的工作簿新增工作表,可用标识变量切换窗口来控制在哪个工作簿中新增工作表

再次感谢二位的回复,谢谢!
1