現在、Windows 7とOffice 2010を使用しています。Outlookで電子メールを作成して送信していた古いマクロがあります。それは電子メールの本文を作成するために関数(下記)を使用していました。それは動作していましたが、Office 2010で問題なく動作します。マクロはデータファイルから情報をコピーし、マクロの別のワークシートにペーストします。電子メールを作成するときに、データを新しいノートにコピーします。次に、この関数を呼び出して電子メールの本文を作成します。マクロが下の行に遭遇すると(ERROR HAPPENS HERE)、関数から抜け出し、電子メールの作成と送信を続けますが、電子メールには本文がありません。このコード行に何が間違っているかについてのご意見は、大いに感謝しています。助けてくれてありがとう........Outlook機能が動作しなくなった
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"
' TempFile = "C:\temp" & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
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
With TempWB.PublishObjects.Add(_ ' error happens here
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
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=")
TempWB.Close SaveChanges:=False
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function
私は何が間違っているかを理解したので、この質問を無視してください。一度変数にデータがないと、フィールドは空白になりました。変数にデータがあることを確認したら、コードは期待どおりに実行されました。 – Shaves