使用OLE下载时,Excel被锁定

2020-08-16 19:16发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家-我正在将新工作表添加到放置在Desktop上的现有excel中。我想在新工作表上添加一些信息。成功将新工作表添加到现有工作表中,但是当我打开Excel时说""。 xls已经打开。重新打开将导致您所做的所有更改被放弃。要您要重新打开" 。 打开新工作表后,还没有更改?下面是我的代码。感谢您的帮助。

DATA gs_excel TYPE ole2_object。

DATA gs_wbooks TYPE ole2_object。

数据gs_wbook类型ole2_object。

数据:gs_application类型ole2_object,

工作表类型ole2_object,

工作表类型ole2_object,

first_sheet TYPE ole2_object

单元格类型ole2_object。

创建对象gs_excel'EXCEL.APPLICATION'。

设置gs_excel"可见"的属性= 0。

获取gs_excel"工作簿" = gs_wbooks的属性。

*获取gs_wbooks'Application'= gs_application的属性。

*-打开现有文档

gs_wbooks"打开"的呼叫方法= gs_wbook

导出#1 = p_path。

如果sy-subrc = 0。

*创建第一个Excel工作表

gs_excel"工作表"的调用方法= first_sheet

导出#1 = 1。

gs_excel"工作表"的调用方法=工作表。

呼叫"添加"表格的方法

导出

#1 =首张纸。

获取gs_excel'ActiveSheet'=工作表的属性。

设置工作表"名称" ="标题"的属性。

*索引= row_max *(sy-tabix-1)+1。" 1-列名

表格"单元格"的调用方法=单元格导出#1 =1。"索引。

设置单元格的属性'值'='单元格data1'。

表格"单元格"的调用方法=单元格导出#1 =2。"索引。

设置单元格的"值" ="单元格data2"的属性。

*将excel speadsheet保存为特定的文件名

调用"保存"工作表的方法

导出

#1 = p_path"文件名

#2 = 1。

调用gs_excel'QUIT'的方法。

免费对象:gs_excel,gs_wbooks,gs_wbook,表格,表格。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


您好,专家-我正在将新工作表添加到放置在Desktop上的现有excel中。我想在新工作表上添加一些信息。成功将新工作表添加到现有工作表中,但是当我打开Excel时说""。 xls已经打开。重新打开将导致您所做的所有更改被放弃。要您要重新打开" 。 打开新工作表后,还没有更改?下面是我的代码。感谢您的帮助。

DATA gs_excel TYPE ole2_object。

DATA gs_wbooks TYPE ole2_object。

数据gs_wbook类型ole2_object。

数据:gs_application类型ole2_object,

工作表类型ole2_object,

工作表类型ole2_object,

first_sheet TYPE ole2_object

单元格类型ole2_object。

创建对象gs_excel'EXCEL.APPLICATION'。

设置gs_excel"可见"的属性= 0。

获取gs_excel"工作簿" = gs_wbooks的属性。

*获取gs_wbooks'Application'= gs_application的属性。

*-打开现有文档

gs_wbooks"打开"的呼叫方法= gs_wbook

导出#1 = p_path。

如果sy-subrc = 0。

*创建第一个Excel工作表

gs_excel"工作表"的调用方法= first_sheet

导出#1 = 1。

gs_excel"工作表"的调用方法=工作表。

呼叫"添加"表格的方法

导出

#1 =首张纸。

获取gs_excel'ActiveSheet'=工作表的属性。

设置工作表"名称" ="标题"的属性。

*索引= row_max *(sy-tabix-1)+1。" 1-列名

表格"单元格"的调用方法=单元格导出#1 =1。"索引。

设置单元格的属性'值'='单元格data1'。

表格"单元格"的调用方法=单元格导出#1 =2。"索引。

设置单元格的"值" ="单元格data2"的属性。

*将excel speadsheet保存为特定的文件名

调用"保存"工作表的方法

导出

#1 = p_path"文件名

#2 = 1。

调用gs_excel'QUIT'的方法。

免费对象:gs_excel,gs_wbooks,gs_wbook,表格,表格。

付费偷看设置
发送
5条回答
小灯塔
1楼-- · 2020-08-16 20:18

您必须以与创建完全相反的顺序释放OLE对象

调用" QUIT"应用程序的呼叫方法。

免费对象单元格

免费对象工作表。

免费对象工作簿。

免费对象应用程序。

此致

Raymond

clasier
2楼-- · 2020-08-16 19:56

Merci Monsieur

callcenter油条
3楼-- · 2020-08-16 20:20

嗨,专家们-有人可以帮忙吗? 如果您不理解,将重新解释该问题。

风早神人
4楼-- · 2020-08-16 20:18

Appala,

您当然是正确的。 我总是在Excel宏的开头将Visible和ScreenUpdating属性设置为" False",然后在释放连接之前将它们都设置为" True"。 这样可以改善外观和性能。

我认为当OLE2连接试图关闭到已停止执行的程序(Excel)的链接时,会生成您所看到的错误。 当您发送退出命令时,Excel停止运行。

"免费对象gs_Excel"是您需要发布的唯一命令。

Juan

N-Moskvin
5楼-- · 2020-08-16 20:18

Appala,

我看了我的一些使用OLE2接口的旧程序。 它们不会像您一样向Excel对象发出" QUIT"命令。 他们以这种方式结束与excel的连接:

*告诉Excel在每次更改后恢复更新整个工作表

设置oExcel" ScreenUpdating"的属性= 1。

oExcel的"可见"设置属性= 1。

*与Excel断开连接

免费对象oExcel。

这似乎太简单了,但是已经使用了很多年。

我记得编写这些程序时可能会给您带来麻烦的问题。 如果必须从调试器退出OLE2程序,则有时Excel应用程序的实例将继续在您的PC上运行。 这些实例是不可见的,可以锁定excel数据文件。您可能需要使用PC上的任务管理器来"结束任务"并停止它们。

祝你好运

胡安

一周热门 更多>