如何在 OpenOffice VBA 的公式中使用 "(双引号)?例如使用 Replace()

How do you use " (double quotes) in a formula in OpenOffice VBA? For instance with Replace()

我正在寻找用反斜杠转义双引号替换双引号 " - \".

我在网上看到可以在VBA中使用双引号,如果你在主双引号内使用两个双引号。但是,这似乎对我不起作用。例如,我尝试了以下代码:

Function ADDSLASHES(InputString As String)
    NewString = Replace(InputString, "\", "\")
    NewString = Replace(NewString, "'", "\'")
    NewString = Replace(NewString, """", "\""")
    ADDSLASHES = NewString
End Function

当我测试它时,这个函数成功地替换了单反斜杠和单引号,但没有替换双引号。

我还了解到您可以使用 CHR(34),而在其他地方则可以使用 CHR(147)。但这也行不通。我尝试了以下几行:

NewString = Replace(NewString, CHR(34), "\"+CHR(34))
NewString = Replace(NewString, CHR(147), "\"+CHR(147))

但是用带有双引号的单元格测试它不起作用。难道我做错了什么?如何在 Replace() 函数中使用双引号?

当我在单元格中输入 a"b 时,Calc 将其转换为右双引号,而不是左双引号。添加此行使其工作:

NewString = Replace(NewString, CHR(148), "\"+CHR(148))

请注意 x94(十进制 148)是一个扩展的 ASCII 编码字符,我会不惜一切代价避免这种情况。强烈建议仅使用前 128 个字符作为 ASCII,而对其他所有字符使用 Unicode。

右双引号的 Unicode 值为 U+201D。遗憾的是,显然 LibreOffice Basic 没有处理这些值的原生方式。有 ChrW 但这需要 VBA 兼容性选项。另一种方法是从 Basic 调用 UNICODE() 电子表格函数,但这很麻烦。

我的偏好:不要将 Basic 用于任何重要的事情。 LibreOffice 宏可以用 Python 编写,它具有强大的 Unicode 支持。

编辑:

有一件事我昨天忘了提:Select公式栏中的引号,然后按Alt+x找出它到底是什么。这会将其转换为 Unicode 值,然后再转换回来。

编辑 2:

没错——Alt+X 仅适用于 LibreOffice,不适用于 AOO。同样出于某种原因,上面的扩展 ASCII 代码似乎在 AOO 中不起作用。也许这不是一件坏事。无论如何,这是Unicode电子表格函数访问方法,它在AOO和LO中对我都有效。

fa = createUnoService("com.sun.star.sheet.FunctionAccess")
ch = fa.CallFunction("UNICHAR", Array(CLng("&H201D"))
NewString = Replace(NewString, ch, "\"+ch)

如果这不起作用,那么您的单元格中可能还有其他内容。要弄清楚它是什么,您可以安装 LibreOffice。或者还有很多其他方式;我最常使用 GVim 文本编辑器。另外,我刚刚用谷歌搜索并找到 https://www.branah.com/unicode-converter,您可以在其中粘贴一些文本并查看实际的 UTF-16 十六进制值。