从VBA中的字符串变量中删除换行符

时间:2016-04-28 09:25:23

标签: excel vba excel-vba

我已声明并为VBA中的字符串变量赋值。

该变量包含许多换行符,您可以建议如何删除这些换行符,使用以下代码从xml文档中为该变量赋值: -

s = Application.GetOpenFilename() 

myFolder = ActiveWorkbook.Path
s = Dir(myFolder & "\*.xml")

Do While s <> ""

If s <> "False" Then

    Set FSO = CreateObject("Scripting.FileSystemObject")
        If FSO.FileExists(s) Then

        t = myFolder & "\" & Replace(FSO.GetTempName(), ".tmp", ".xml")

       Name s As t
        Set ts(0) = FSO.OpenTextFile(t, 1, False, -2) 

        FileContents = ts(0).READALL                

   ts(0).Close
       Set ts(0) = Nothing

   End If
End If

  s = Dir$ 

loop

有人可以建议解决方案吗?

谢谢尼克

1 个答案:

答案 0 :(得分:4)

首先,您需要确定您的变量有哪些换行符 - 或者您可以使用多次替换来测试所有这些换行符。幸运的是,VBA拥有用于换行的vbConstants,让您的生活更轻松:

myStr = Replace(myStr, vbCr, " ")
myStr = Replace(myStr, vbLf, " ")
myStr = Replace(myStr, vbCrLf, " ") '// or vbNewLine

注意我已经使用空格作为替代,否则你最终会被合并的单词:

  

一些文字的例子
  换行

用零长度字符串""替换换行符将导致:

  

带换行符的一些文字示例

而用空格" "替换会产生:

  

包含换行符的某些文字的示例

只是为了好玩另一种方式就是这样:

myStr = Join$(Split(myStr, vbCrLf), " ")

这使用换行符作为分隔符将字符串拆分为单个维度数组,然后使用空格连接数组的每个元素。在这种情况下,这两种方法都没有真正的优势。