在Winword和Excel中使用OLE更改ActivePrinter

2020-08-30 11:39发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的专家 我需要在Wo...

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

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


尊敬的专家

我需要在Word和Excel中更改属性ActivePrinter。 虽然它可以在Word中运行,但无法在Excel中运行。 请在下面找到我的Word和Excel的ABAP代码。 非常感谢您的帮助!

 *在Winword中更改ActiveDocument
 参数:pa_prt1 TYPE rspoprname
               默认为"佳能MG5300系列打印机",
             pa_prt2 TYPE rspoprname
                 默认为" Microsoft打印为PDF"。

 数据:lo_application TYPE ole2_object,
       lo_documents TYPE ole2_object,
       lo_activedocument TYPE ole2_object,
       le_string TYPE字符串。

 创建对象lo_application'Word.Application'。
 lo_application的"可见"设置属性= 0。

 lo_application"文档"的调用方法= lo_documents。
 lo_documents"打开"的调用方法
   出口
     #1 ='C:\ Temp \ File.doc'。
 lo_application的调用方法'ActiveDocument'= lo_activedocument。

 lo_application'ActivePrinter'的属性= le_string。

 CASE le_string。
   当pa_prt1。
     lo_application'ActivePrinter'的设置属性= pa_prt2。
   当pa_prt2。
     lo_application'ActivePrinter'的设置属性= pa_prt1。
   当别人。
 结束。

 lo_activedocument的调用方法"关闭"。
 lo_application'Quit'的呼叫方法
   出口
     #1 = 0。

 *在Excel中更改ActiveDocument
 参数:pa_prt1 TYPE rspoprname
               默认为"佳能MG5300系列打印机",
             pa_prt2 TYPE rspoprname
                 默认为" Microsoft打印为PDF"。

 数据:lo_application TYPE ole2_object,
       lo_workbooks TYPE ole2_object,
       lo_activeworkbook TYPE ole2_object,
       le_string TYPE字符串。

 创建对象lo_application'Excel.Application'。
 lo_application的"可见"设置属性= 0。

 lo_application"工作簿"的调用方法= lo_workbooks。
 lo_workbook的"打开"呼叫方法
   出口
     #1 ='C:\ Temp \ Excel.xls'。
 lo_application'ActiveWorkbook'的调用方法= lo_activeworkbook。

 lo_application'ActivePrinter'的属性= le_string。

 CASE le_string。
   当pa_prt1。
     lo_application'ActivePrinter'的设置属性= pa_prt2。
   当pa_prt2。
     lo_application'ActivePrinter'的设置属性= pa_prt1。
   当别人。
 结束。

 lo_activeworkbook的呼叫方法"关闭"。
 lo_workbook的呼叫方法"关闭"。
 lo_application'Quit'的呼叫方法
   出口
     #1 = 0。
 

4条回答
土豆飞人
2020-08-30 12:30

没错,我错过了"在上"。 谢谢你的提示! 这肯定是我的问题的一部分,但我仍然无法解决。 我的打印机是

  • Microsoft打印到PDF auf Ne01:
  • 佳能MG5300系列打印机nef 05:

我按如下方式更改了代码,但 lo_application'ActivePrinter'= le_string的设置属性。其中 le_string 的值为:

  • Microsoft打印到PDF auf Ne01:
  • 佳能MG5300系列打印机nef 05:

也不起作用。

 *在Excel中更改ActiveDocument
 参数:pa_prt1 TYPE rspoprname
               默认为"佳能MG5300系列打印机",
             pa_prt2 TYPE rspoprname
               默认为" Microsoft打印为PDF"。

   数据:lo_application TYPE ole2_object,
         lo_workbooks TYPE ole2_object,
         lo_activeworkbook TYPE ole2_object,
         le_string TYPE字符串,
         le_printer TYPE字符串,
         le_separator TYPE字符串,
         le_port TYPE字符串。

   案例sy-langu。
     当" E"。
       le_separator ='on'。
     当" D"。
       le_separator ='auf'。
     当别人。
   结束。

   创建对象lo_application'Excel.Application'。
   lo_application的"可见"设置属性= 0。

   lo_application"工作簿"的调用方法= lo_workbooks。
   lo_workbook的"打开"呼叫方法
     出口
       #1 ='C:\ Temp \ Excel.xls'。
   lo_application'ActiveWorkbook'的调用方法= lo_activeworkbook。

   lo_application'ActivePrinter'的属性= le_string。
   如果le_separator不是INITIAL。
     分割le_string AT le_separator INTO le_printer le_port。
     清除:le_string。
     浓缩:le_printer,le_port。
   万一。

   CASE le_printer。
     当pa_prt1。
       CONCATENATE pa_prt2 le_separator'Ne01:'INTO le_string由空格分隔。
     当pa_prt2。
       CONCATENATE pa_prt1 le_separator'Ne05:'INTO le_string由空格分隔。
     当别人。
   结束。
   lo_application'ActivePrinter'的设置属性= le_string。

   lo_activeworkbook的呼叫方法"关闭"。
   lo_workbook的呼叫方法"关闭"。
   lo_application'Quit'的呼叫方法
     出口
       #1 = 0。

 

一周热门 更多>