Delphi-将ALT键码传递给Excel

时间:2019-03-21 18:33:21

标签: excel delphi

Delphi RIO-我有一个用Delphi编写的Excel插件。我想编写一个例程,将具有多行内容的单元格转换为单行内容,基本上将换行符替换为空格字符。我通过将'ALT 0010'替换为空格字符来实现。通过这个,我的意思是我按住ALT键,然后在数字键盘上按0010。这会做我想要的。我现在需要对该功能进行编程。我似乎找不到代表ALT 0010的正确方法。如果要替换“!”在整个电子表格中留有空格,我可以使用以下代码来实现。

var
WholeSheet:  ExcelRange;
begin
...
WholeSheet := myActiveSheet.Cells;
WholeSheet.Replace('!', ' ', xlPart, xlByRows, False, False);

当我尝试通过捕获Excel宏查看此内容时,我真的很困惑...

Cells.Select
Selection.Replace What:="" & Chr(10) & "", Replacement:=" ", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

我如何表示ALT 0010并将其替换为'!'

1 个答案:

答案 0 :(得分:4)

将换行符编码为ANSI / UTF-8中的单字节字符,其值为0x0A(十进制为10)。

Delphi允许您将control strings用作:

WholeSheet.Replace(#10, ' ', xlPart, xlByRows, False, False);

控制字符串由井号#给出,后跟表示字节的0-255(Unicode德尔福之前)或0-65535(Unicode Delphi)之间的十进制数字。字符的最大(或两个字节)值。

或者,您也可以使用Chr函数:

WholeSheet.Replace(Chr(10), ' ', xlPart, xlByRows, False, False);

.Replace中的第一个参数是OLEVariant,它可以隐式接受字符文字。