在使用OLE的同一个Excel单元格中有多行

我有一些SAP OLE代码需要一个内部表并将其粘贴到Excel中。 但是,一个字段需要在同一个单元格中有两行。

我已经尝试使用CL_ABAP_CHAR_UTILITIES-NEWLINE和CL_ABAP_CHAR_UTILITIES-VERTICAL TAB和'CR_LF'字符作为回车符,并且这些工作正常单独设置单元格的值时,但使用粘贴方法开始新行(不是新行同一个单元格)。 不幸的是,手动设置单元格的值过于耗费性能。

我也试着录制一个alt + return键的macros,它告诉我excel读取的是=“line1”&char(10)&“line2”,但是我无法使用OLE正确parsing这个。

有什么办法可以使粘贴方法parsing回车字符正确吗?

我目前的做法是低于。 谢谢你的帮助。

CONCATENATE line1 line2 INTO mult_lines SEPARATED BY cl_abap_char_utilities=>newline. 

然后,我将mult_lines添加到内部表,并将内部表的每一行连接到gt_data [],其types为:LIKE Table of gv_data(4096)TYPE c。

 CALL METHOD cl_gui_frontend_services=>clipboard_export IMPORTING data = gt_data[] CHANGING rc = gv_rc EXCEPTIONS cntl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4. CALL METHOD OF gv_appl 'Cells' = gv_cell EXPORTING #1 = lv_row1 #2 = lv_col1. CALL METHOD OF gv_appl 'Range' = gv_range EXPORTING #1 = gv_cell #2 = gv_cell. CALL METHOD OF gv_range 'Select'. CALL METHOD OF gv_sheet 'Paste'. 

双引号可以解决问题。 只需双引号将所有文本放入一个单元格,并将单元格连接到0x09(下一列)或0x0A(下一行)

例如:(我使用ASCII代码来表示字符)将0x41 0x0A 0x42粘贴到一个单元格中,我们填充两个相邻的行,每行中有一行文本,

 A B 

当将0x22 0x41 0x0A 0x42 0x22粘贴到单元中时,我们用2行填充一个单元。

 "A B" 

下面的例子填充到每行两行的单元格中:

 CONSTANTS: nextC TYPE abap_char1 VALUE cl_abap_char_utilities=>horizontal_tab, nextR TYPE abap_char1 VALUE cl_abap_char_utilities=>newline, quot TYPE abap_char1 VALUE '"'. DATA: buffer TYPE string. CONCATENATE quot 'R1C1L1' nextR 'R1C1L2' quot nextC quot 'R1C2L1' nextR 'R1C2L2' quot INTO buffer. 

这只会在每个单元格中工作,但是您可以尝试使用Application.SendKeys "{F2}" ,这将打开编辑栏,然后执行多行的粘贴。 这应该工作,不知道我推荐这个。 为什么不通过设置单元格的值来简单地设置值?