AG 發問時間: 電腦與網際網路軟體 · 8 年前

excel vba shapes

請教一下..下面是excel vba藉由outlook e-mail 將文字訊息帶出, 現在想改成將開啟的工作表中的所有圖片物件帶出… 我試著用shapes 去寫…怎麼試都試不出來 請教各位大大 “Email_Body =”的部分 該如何寫 Sub Macro1()'' Dim Email_Subject, Email_Send_From, Email_Send_To, _ Email_Cc, Email_Bcc, Email_Body As String Email_Subject = "通知" Email_Send_From = "xxx@xxx.com" Email_Send_To = "xxx@xxx.com" Email_Cc = "" Email_Body = If MsgBox("傳送?", vbYesNo) <> vbYes Then Exit Sub '返回值不為"是",則退出 On Error GoTo debugs Set Mail_Object = CreateObject("Outlook.Application") Set Mail_Single = Mail_Object.CreateItem(0) With Mail_Single .Subject = Email_Subject .To = Email_Send_To .cc = Email_Cc .BCC = Email_Bcc .HTMLBody = Email_Body .Display .send End Withdebugs: If Err.Description <> "" Then MsgBox Err.DescriptionEnd Sub

已更新項目:

以上是指別的檔案插入的圖片, 不是excel圖表

2 個解答

評分
  • 8 年前
    最佳解答

    不知道你指的圖片是圖表還是插入的圖片,以下程式是用來轉出圖表內容到信件上的程式,大致上要透過將圖表轉為圖片,然後寄信時,再將這些圖片插入信中,然後HTML BODY引用這些圖片:

    ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    ' 指定的工作表,所有的圖表,會出成GIF檔

    Function ExpChart(shtName As String)

    Dim XlsChart As ChartObject

    For Each XlsChart In Worksheets(shtName).ChartObjects

    XlsChart.Chart.Export Filename:=Environ("temp") & "\" & XlsChart.Name & ".gif", FilterName:="GIF"

    Next

    End Function---------- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    ' 將匯出的圖檔,批次建立HTML格式標籤

    Function ChartCID(shtName As String)

    Dim XlsChart As ChartObject

    Dim strChartCID As String

    For Each XlsChart In Worksheets(shtName).ChartObjects

    strChartCID = strChartCID & "<img src=""cid:" & XlsChart.Name & ".gif"">"

    Next

    ChartCID = strChartCID

    End Function

    ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    寄信方式,我採用CDO方式,我不是很喜歡用Outlook.Application 的方式寄出,這部份你再參考其他網頁介紹

    信件內的HTML BODY部分大致如下:

    .HTMLBody = "<HTML>" & _

    Sheets(shtName).Range("S2") & _ ' 內容開頭部分

    ChartCID(shtName) & _ ' 插入ChartCID程式產生的HTML內容

    "</HTML>"

    HTML BODY的部分,不包含圖檔存在的路徑,要讓圖秀的出來,就要讓圖插在信件裡,因此,要透過另一種方式將信件內插入圖檔,請參考以下插入附件方式:

    For Each XlsChart In Worksheets(shtName).ChartObjects

    Set objBP = objCDO.AddRelatedBodyPart((Environ("temp") & "\" & XlsChart.Name & ".gif"), XlsChart.Name & ".gif", CdoReferenceTypeName)

    objBP.Fields.item("urn:schemas:mailheader:Content-ID") = "<" & XlsChart.Name & ".gif>"

    Next

    objBP.Fields.Update

    ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----

    測試看看吧!!

    • 登入以對解答發表意見
  • jan
    Lv 4
    8 年前

    提供你一些意見:

    第一要先將 shape 另存成 圖片檔才能以附件方式傳送圖片

    這個可以參考:http://chijanzen.net/wp/?p=289

    SavePicture PictureFromObject(ActiveSheet.Shapes(Me.ComboBox1.Text)), rTemp

    第二要:使用outlook傳送附件要使用

    .Attachments.Add 檔案路徑及名稱

    • 登入以對解答發表意見
還有問題?馬上發問,尋求解答。