2012-05-01 13 views
1

次のコードを実行すると、新しいメールポップアップウィンドウに第1の部分が表示されますが、第2の部分は表示されません。しかし、私はちょうど送信をクリックし、それを受け取る場合、私は正しく表示されている2つの部分が表示されます。VBAがOutlookメールを自動化するバグ:HTMLBodyに2つの文字列を入力する

なぜですか?なぜ私はそれを送信する前に新しい電子メールのポップアップウィンドウで2番目の部分を見ていないのですか?

ありがとうございます!

コード以外にも

Dim OutApp As Object 
Dim OutMail As Object 

With Application 
    .EnableEvents = False 
    .ScreenUpdating = False 
End With 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(0) 

On Error Resume Next 
With OutMail 
    .To = getConfig("MailTarget") 
    .CC = "" 
    .BCC = "" 
    .Subject = "TEST" 
    .HTMLBody = p1 & "<br><br>" & p2 
    .Display 
End With 
On Error GoTo 0 

With Application 
    .EnableEvents = True 
    .ScreenUpdating = True 
End With 

Set OutMail = Nothing 
Set OutApp = Nothing 

p1 = RangetoHTML(someRangeFromWorkBook1) 
p2 = RangetoHTML(someRangeFromWorkBook2) 

もっとコード:

Function RangetoHTML(rng As Range) 

Dim fso As Object 
Dim ts As Object 
Dim TempFile As String 
Dim TempWB As Workbook 

TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm" 

'Copy the range and create a new workbook to past the data in 
rng.Copy 
Set TempWB = Workbooks.Add(1) 
With TempWB.Sheets(1) 
    .Cells(1).PasteSpecial Paste:=8 
    .Cells(1).PasteSpecial xlPasteValues, , False, False 
    .Cells(1).PasteSpecial xlPasteFormats, , False, False 
    .Cells(1).Select 
    Application.CutCopyMode = False 
    On Error Resume Next 
    .DrawingObjects.Visible = True 
    .DrawingObjects.Delete 
    On Error GoTo 0 
End With 

'Publish the sheet to a htm file 
With TempWB.PublishObjects.Add(_ 
    SourceType:=xlSourceRange, _ 
    Filename:=TempFile, _ 
    Sheet:=TempWB.Sheets(1).Name, _ 
    Source:=TempWB.Sheets(1).UsedRange.Address, _ 
    HtmlType:=xlHtmlStatic) 
    .Publish (True) 
End With 

'Read all data from the htm file into RangetoHTML 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set ts = fso.GetFile(TempFile).OpenAsTextStream(1, -2) 
RangetoHTML = ts.ReadAll 
ts.Close 
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _ 
         "align=left x:publishsource=") 

'Close TempWB 
TempWB.Close savechanges:=False 

'Delete the htm file we used in this function 
Kill TempFile 

Set ts = Nothing 
Set fso = Nothing 
Set TempWB = Nothing 
End Function 
+0

最初の部分はどういう意味ですか?スクリーンショットを提供できますか?そして私はあなたがExcelからこれを実行していると思いますか? – brettdj

+0

私はちょうどそれをテストし、私は両方の部分を見ることができますか? –

+0

どのように?私はそれを送信する前に表示したとき、私はパート1を見ました:[リンク](http://i48.tinypic.com/9iv628.jpg)私は自分自身にそれを送ったとき、私は両方の部分を見なければなりません:[リンク] (http://i48.tinypic.com/2hoh6jr.jpg)なぜ私は本当に知りませんので、助けてください...ありがとう! – user1368780

答えて

0

両方の私のために表示されているようだという点で、私は以前のポスターに同意!

最初は、With OutMailブロックの周りにトラップしているエラーをコメントアウトしていましたが、あなたが見ていないというエラーが発生しました。

私は過去にOutlookの問題に助けを見つけた物事のカップル:

  • 保存各メールアイテム。だから、

多分、次の試してください変更します。私は、オブジェクトの動的配列を作成したい、過去の電子メールの多くに対処するために使用

With OutMail 
.To = getConfig("MailTarget") 
.CC = "" 
.BCC = "" 
.Subject = "TEST" 
.HTMLBody = p1 & "<br><br>" & p2 
.Save '<<<<<<<<<<< 
.Display  
End With 
  • やメールが作成されますように私配列を追加してから、プロシージャの最後で配列の内容を空にして、それらを表示するか、またはそれらを送信します。正確な構文がわからない
+0

@SiddharthRout:O__Oそれは私がまだ2番目のテーブルを見ることができないので、奇妙で面白いです... [リンク](http://wikisend.com/download/367094/untitled.PNG) 。私がwhytheの提案を試みた後でさえ、私が使用しているシステムは、Windows XP Professionalバージョン2002とmsオフィス2003です。また、最初のテーブルの下部にある境界線もありません。皆さんが見ることができるので、この問題は絶望的になります。 #_#お手伝いいただきありがとうございます!他のアイデアがあれば教えてください。 – user1368780

関連する問題