6

VBからの電子メール(Outlook)の本文(添付ファイルではない)でExcelチャートを送信したいのですが、これを行う方法を知っている人はいますか?

解決済み:
以下に回答するためにもう少し詳細を追加するには、次のものが必要になります(いくつかの改善で行うことができます)。

Sheets(2).ChartObjects(1).Chart.Export "C:\temp\Chart2.png"

...。

   .HTMLBody = "<html xmlns:o='urn:schemas-microsoft-com:office:office'" & _
            "xmlns: x = 'urn:schemas-microsoft-com:office:excel'" & _
            "xmlns='http://www.w3.org/TR/REC-html40'> " & _
            "<head></head><body><img src='Chart2.png'></body></html>"

    .Attachments.Add ("C:\temp\Chart2.png")
4

2 に答える 2

5

最良の方法はチャートをエクスポートすることのようです:

Sheets(1).ChartObjects("Chart 1").Chart.Export "C:\Chart1.png"

次に、画像をメールのHTML本文に追加します。

.HTMLBody = .HTMLBody & "< img src='c:\folder\filename.png'>"

technetmrexcelの両方で確認済み

于 2012-04-23T13:58:45.367 に答える
5

興味がある場合に備えて、サブファイルパスと一時ファイルパスの両方を使用しているため、上記のソリューションに加えて、ここにソリューションを追加すると思いました。

ここからコードを変更して、一時パスを使用してグラフを挿入しました(ブック内のセルの範囲を使用して同じことを行います)。

Sub createGraph(nameSheet As String, nameChart As String, nameFile As String)
  ThisWorkbook.Activate
  Worksheets(nameSheet).Activate
  With ThisWorkbook.Worksheets(nameSheet).ChartObjects(nameChart)
    .Activate
    .Chart.Export Environ$("temp") & "\" & nameFile & ".jpg", "JPG"
  End With
End Sub

HTML本文に次のように入力します。

Call createGraph("Graphs", "Chart 1", "filename")
TempFilePath = Environ$("temp") & "\"
.Attachments.Add TempFilePath & "filename.jpg", olByValue, 0
.HTMLBody = .HTMLBody & "<img src='cid:filename.jpg'>"

「olByValue、0」を使用すると、添付ファイルが0の位置に追加され、電子メールに添付ファイルとして表示されなくなります。

于 2014-10-15T09:22:10.360 に答える