1

我有一些 SAP OLE 代码,它采用内部表并将其粘贴到 excel 中。但是,一个字段需要同一单元格内的两条线。

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

我还尝试记录 alt + return 键的宏,它向我显示 excel 将其读取为 ="line1" & char(10) & "line2" 但我无法使用 OLE 正确解析它。

有什么办法可以让粘贴方法正确解析回车字符?

我目前的方法如下。谢谢你的帮助。

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

然后我将 mult_lines 添加到内部表并将内部表的每一行连接到 gt_data[] 类型: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'.
4

2 回答 2

2

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

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

A
B

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

"A
B"

下面的示例填充单元格,每个单元格有 2 行:

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.
于 2013-05-24T03:05:06.400 回答
0

这仅适用于每个单元格,但您可以尝试使用Application.SendKeys "{F2}"它将打开编辑栏,然后粘贴多行。这应该可行,但不确定我是否推荐这个。为什么不简单地通过设置单元格的值来设置值?

于 2013-05-23T20:19:42.907 回答