标题:VFP操控EXCEL的一个问题
只看楼主
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
结帖率:95.71%
已结贴  问题点数:20 回复次数:5 
VFP操控EXCEL的一个问题
各位亲,我的电脑环境是 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

盼高手解答。谢谢!
搜索更多相关主题的帖子: add VFP EXCEL name 编号 
2020-11-20 10:12
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
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
2020-11-20 10:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:10 
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编辑过]


坚守VFP最后的阵地
2020-11-20 10:37
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
感谢“吹版”和“sdta”的回复!

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

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


只求每天有一丁点儿的进步就可以了
2020-11-20 10:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
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

坚守VFP最后的阵地
2020-11-20 11:07
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
经二位版主的回复启发,已解决问题了。
原来,新增工作表时不可使用标识变量,其他语名均可使用自己的标识变量,对同一项目中不同的工作簿新增工作表,可用标识变量切换窗口来控制在哪个工作簿中新增工作表

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

只求每天有一丁点儿的进步就可以了
2020-11-20 11:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-503943-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.345843 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved