VBA与&串联,因为字符串也有&

时间:2019-03-15 05:17:41

标签: excel vba string-concatenation

我正在从一个单元格读取一个值,内容的字符串中包含&。例如,单元格值为“ BAU开发与生产支持合作伙伴”

JavaDStream<String> lines

当我打印xCellValue时,它显示“这是对串联BAU Dev的测试”。

因此,单元格内的&已成为串联的一部分。如何告诉VBA不要解释单元格中的&?

感谢所有答复。我已经Debug.Print并进一步确定了问题:

xCellValue = xRg.Cells(i, 2).Value
xMsg = " This is a test of the concatenation "
xMsg = xMsg & xCellValue & vbCrLf & vbCrLf

直到Debug.Print xURL,&仍显示在字符串中。但是,该字符串在ShellExecute xMsg中的&之后终止。问题不在于读取单元格值,就像我以前想的那样。如果我设置

    xURL = "mailto:" & xEmail & "?subject=" & xSubj & "&body=" & xMsg
    Debug.Print xURL
    ShellExecute 0, vbNullString, xURL, vbNullString, vbNullString, vbNormalFocus

ShellExecute中的正文消息将仅显示“这是一个测试”

1 个答案:

答案 0 :(得分:0)

好的,我找到了解决方案。我需要

' Replace & with %26 (hex)
xMsg = Application.WorksheetFunction.Substitute(xMsg, "&", "%26")

与我需要的原因相同

' Replace spaces with %20 (hex)
xSubj = Application.WorksheetFunction.Substitute(xSubj, " ", "%20")
xMsg = Application.WorksheetFunction.Substitute(xMsg, " ", "%20")
' Replace carriage returns with %0D%0A (hex)
xMsg = Application.WorksheetFunction.Substitute(xMsg, vbCrLf, "%0D%0A")

有关更多详细信息,请选中URL encoding