2015-10-09 34 views
1

嘗試使用VBA通過Excel自動化Outlook電子郵件的過程。使用Replace替換電子郵件中的換行符()

接近我的代碼的末尾,我在Excel單元格中有一個由;#(例如:;#abacus;#bicycle;#cheese;#)分隔的值的字符串。

一旦我到達電子郵件創建部分的.HTMLBody部分,我將使用Replace()來刪除分隔符。

.HTMLBody = Replace(.HTMLBody, ";#", ", ") 

這很好,因爲它用逗號分隔列表。我還有另一個處理開始的部分(在我的列表開始之前的;#)。這看起來的具體實例「的文章:」

.HTMLBody = Replace(.HTMLBody, "List: , ", "List:") 

現在應改爲:「清單:算盤,自行車,奶酪,」

我試圖到現在刪除多餘的逗號和空格在我的名單結束後(「奶酪」應該以「奶酪」結尾)。列表將始終具有不同長度的值,不一定以奶酪結尾,但始終以;#爲基礎,以值分隔符結尾。

我知道電子郵件中的最後一個值總是跟着返回<br>,但是當我嘗試此代碼時,它不起作用(換行符包括括號內的空格以不破壞代碼塊,它們不在我真正的VBA代碼):

.HTMLBody = Replace(.HTMLBody, ", <br><br>", "<br><br>") 

基於我的替代值(在這種情況下,旨在取代三次)的瘋狂的系統上,我覺得它應該工作,但事實並非如此。

VBA是否無法搜索帶換行符的字符串並用換行符替換它?

我也覺得有更好的方法來做到這一點 - 我的VBA充其量是劣質的。

+0

嘗試.HTMLBody =左(.HTMLBody,len(.HTMLBody)-2)可以去掉尾部的逗號和空格。不知道我理解問題的第二部分。 – Yaegz

+1

'
'是HTML中的換行符。但是'chr(13)+ chr(10)'或'vbCrLf'是您在VBA中表示回車+換行的方式。也許嘗試那些? – Marc

+0

任何可以顯示整個HTML字符串(作爲原始HTML)的機會 - 或者至少是一個樣本來覆蓋開始,結束和修改區域,它們既是原樣的,也是您希望的樣子? – Hambone

回答

1

GD克里斯,

看來你接近問題的反向? 此外,表示您開始字符串是:

";#abacus;#bicycle;#cheese;#" 

然而,你在你的第二個指定「替換」的步驟,還有一個價值存在「的文章:」?這應該是初始字符串的一部分,否則它不能在第二個替換語句中找到?

反正假設您最初的字符串是:

"List:;#abacus;#bicycle;#cheese;#" 

你的目標是操縱這個字符串來構建.HTMLbody組件。

這可以通過基於分隔符分割字符串,可以輕鬆完成「#」

與重建非空字符串按如下,其中S將是你開始字符串:

Function HTMLBody(s As String) As String 

    Dim b As String 

    s = Replace(s, "List:", vbNullString) 'Removes the "List:" section 
    aStr = Split(s, ";#") 'Split the string in an array through the ";#" delimiter 

    For Each a In aStr 'Loop through all array values 
     If Not a = vbNullString Then 'Test if array value is not empty 
      If b = vbNullString Then 'Test if b is 'uninitialised' to allow addition of first item without the "," 
       b = a 
      Else 
       b = b & "," & a 
      End If 
     End If 
    Next 

    b = "List:" & b  'Add "List:" back onto the build string 

    HTMLBody = b 'Set the HTMLBody() return value 

End Function 

然後,您可以調用由「HTMLBody」功能:

Sub callHTMLBody() 

    .HTMLbody = HTMLBody("List:;#abacus;#bicycle;#cheese;#") 

End Sub 

這應該讓你正確的字符串操作?

+0

非常感謝您的幫助。我不知道分隔符的分割功能(杜!)。使用該部分和您的格式化循環結束列表項之間的逗號。非常感謝! –

相關問題