2016-06-23 13 views
0

予定テンプレートを使用してExcelからOutlookカレンダーにプレースホルダを送信するマクロを作成しようとしています。 Outlook予定内のExcel VBA - 機能ストリップの書式設定を置換する

ような置き換え機能使用:

Dim oMail as Object 
Set myOlApp = CreateObject("Outlook.Application") 

Set oMail = myOlApp.CreateItemFromTemplate(path) 

(...)

strFind = "Value" 
strNew = Cells(x ,y) 
oMail.body = Replace (oMail.body, strFind, strNew) 

予定が平文として出てくるが、すべての書式が削除されます。フォント、リンク、さらには署名。

.bodyの値を.HTMLbodyに変更すると、replace関数が機能せず、テンプレートが編集されずに出力されます。私は時々変化する電子メールのコンテンツをコードとして本文に入れたくないので、テンプレートの代わりに毎回マクロを編集できるようになります。

お願いします。 私は考えがなくなった。

+0

コピーです。完了したら、コンテンツをOutlookにコピーできます。 – Ralph

+0

これは良い回避策です。ありがとうございます。しかし、私はむしろ、この問題を解決するには、回避策に直接進むよりも何かを間違って定義しているように思えます。他の解決策がない場合、私はそれを使用します。 – Ver

+0

何かを見つけたらお知らせください。私も興味があります。私はこの問題を他の形式で何度も見てきましたが、その解決策は何度もMS Wordを使用することでした。あなたが何か新しいものを見つけたら、私は非常に驚くべきことに興味があります。 – Ralph

答えて

0

oMailのbodyプロパティはプレーンテキストです。 RTFbodyは、すべての書式を持っていますが、それは最初にして、Word文書に交換を行い、空のWord文書にすべてをバイト配列

Dim oMail as Outlook.AppointmentItem 
Set myOlApp = CreateObject("Outlook.Application") 

Set oMail = myOlApp.CreateItemFromTemplate(path) 

Dim RegulareString As String 

'convert from byte array to a string 
RegulareString = StrConv(pushAppt.RTFBody, vbUnicode) 

'do your replacements 
RegulareString = Replace(RegulareString , strFind, strNew) 

'convert back to byte array 
Dim theBytes() As Byte 
theBytes = StrConv(RegulareString , vbFromUnicode) 

oMail.RTFBody = theBytes 
oMail.Display 
+0

こんにちは!どうもありがとうございます。明日チェックしましょう! – Ver

関連する問題