2016-04-28 58 views
0

我已经为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

使用替换替换任何其他字符串在这种情况下没有什么'str = Replace(str,vbLf,“”)' – newguy

+0

你试过了什么?显示一些代码,以帮助我们更好地理解您的问题。 –

+0

@MartinWickman只是回应你一周前的评论,我已经添加了一些代码,你能建议吗 – nir020

回答

2

首先,你需要确定哪些线打破你的变量 - 或者你可以测试所有的人都使用多个内容替换。幸运的是,VBA有一个很容易就能为换行符,使您的生活vbConstants:

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

通知我用一个空格作为替代,否则你将结束的话被合并:

一些文本
带线的例子打破

具有零长度的字符串""更换换行符将导致:

的一些textwith线

例如Break

而具有空间" "替换将产生:一些文本的

实施例带有换行符


只是为了好玩另一个这样做的方法是,像这样:

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

这将使用换行作为分隔符来进行分割字符串成一维数组,然后加入与一个空间阵列的每个元素。没有real这两种方法的优点都只是在这种情况下偏好。