string上的空格不能空格

我有一个从Outlook中粘贴的Excel单元格。 当我用vba读取它的时候,有一些空间,我需要删除。 我花了几个小时才find解决办法。

我试过了:

  • Replace(string_value," ","")并不删除空格
  • Application.find(" ", string_value)和返回的错误
  • Application.trim(string_value)并没有删除空格…

我的解决scheme

 string_value = Replace(Str(string_value), " ", "") 

有谁知道为什么?

Outlook电子邮件可以用两种模式写入:

1)纯文本;

2)HTML(用于允许颜色,布局等)

您可能会进入第二种情况,因为表格不能以纯文本模式插入,并且当您获取variablesstring_value的值时,您将获得完整的HTMLstring。

实际上发生的事情是,Outlook将您的身体转换为HTML格式,以允许从任何邮件服务器查看它(HTML是国际networking语言,可以通过任何浏览器均匀地或几乎读取)。 这意味着,字符空间将不再是" " ,而是它的HTML等价物,也就是说(或其他的东西,我不知道是否有断线,我不是真正的HTML专家)。

因此,当你使用上述三种方法之一时,他们都不能find“视觉空间”,或者更好的string" " 。 但是,当使用Str()函数时,HTMLstring将被重新转换为VBA语言(也就是说等价的将被转换为" " ,您的方法将起作用。

这是因为声明:

 string_value = Replace(Str(string_value), " ", "") 

做几件事情。 通常str()需要一个Long参数。 因为你给它一个string, VBA(在后台)将string转换为长。 在这个过程中,它会丢弃任何垃圾字符(非数字),如CHR(160)。

Str()用空白填充结果,其中Replace()将被删除!

Str函数在MSDN上