vfp控制两个excel表拷贝。
代码如下:
oexcel1= getOBJECT( '','excel.application')
oexcel1.Workbooks.Open( 'D:\Documents\Visual FoxPro 项目\分组排名测试\总分.xls' )
oexcel2= getOBJECT( '','excel.application')
oexcel2.Workbooks.Open( 'D:\Documents\Visual FoxPro 项目\分组排名测试\分组排名.xls' )
osheet1 = oexcel1.workbooks( '总分.xls').Sheets( 1 )
osheet2 = oexcel2.workbooks( '分组排名.xls').Worksheets( '分组排名' )
oexcel1.visible = .t.
oexcel2.visible = .t.
osheet2.Copy( osheet1, )
这段代码执行到最后,OLE提示出错,不能取得类worksheet的Copy属性。
但是如果把
oexcel2= getOBJECT( '','excel.application')
改成
oexcel2= getOBJECT( ,'excel.application')
又能顺利执行完成。
第一种方法两次加载Excel进程,第二种一次加载。
难道两次加载就不支持表拷贝?
我做过测试,在没有Excel进程已经加载的情况下getOBJECT( ,'excel.application')会报错终止。
实际工作中其实很难预测到哪个先启动、哪个后启动,所以倾向第一种方法,即各自加载,然后复制。
各位大虾有什么办法拉兄弟一把?
[解决办法]
示例:
_ole_excel = CreateObject("Excel.Application")
_ole_excel.VISIBLE=.T.
_ole_excel.WorkBooks.Open('aa1.xls') && 要打开的工作表名(xls)必须是全路径
_ole_excel.Sheets(2).CELLS.SELECT
_ole_excel.Selection.Copy
_ole_excel1 = CreateObject("Excel.Application")
_ole_excel1.VISIBLE=.T.
_ole_excel1.WorkBooks.Open('a1.xls')
_ole_excel1.ActiveSheet.PASTE
[解决办法]
从 excel 编辑菜单的“移动或复制工作表”功能来看,只能是复制到一个新工作簿(对应无参数的的 Copy)中,或者同一个工作簿中其他工作表前后。
要完成你需要的操作,只能先复制工作表的内容,然后另一个工作簿中新建一工作表,并粘贴过去
[解决办法]
Copy是同1工作薄内,不同的要先COPY、再PASTE,代码 已经测试通过
[解决办法]
用一个进程就可以
oexcel1=Getobject('','excel.application')
oexcel1.Workbooks.Open('D:\Documents\Visual FoxPro 项目\分组排名测试\总分.xls')
oexcel1.Workbooks.Open('D:\Documents\Visual FoxPro 项目\分组排名测试\分组排名.xls')
oexcel1.Visible = .T.
oexcel1.workbooks('分组排名.xls').Worksheets('分组排名').Copy(oexcel1.workbooks('总分.xls').Sheets(1),)
[解决办法]