我正在从一个单元格读取一个值,内容的字符串中包含&。例如,单元格值为“ 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中的正文消息将仅显示“这是一个测试”
答案 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