Leo
Lv 4
Leo asked in 電腦與網際網路程式設計 · 9 years ago

Excel VBA 如何讓檔案能郵寄出去?

請問:

能不能寫一巨集讓Excel檔案以指定的檔名存檔後當成附加檔寄出,而且郵件標題和郵件內容和收件人也都自動帶進去...(註:但是使用者預設的郵件程式不見得是outlook express,大多是thunderbird)

例如:

檔案存成檔名A,然後以標題為B,郵件內容為C的郵件寄出,收件人為D,E和F等3人

Update:

我知道不容易,不過,有解嗎?如果有解,我繼續研究,如果無解,我也不需要再浪費時間,請先進們指點指點...

Update 2:

YogiBear大大您好,任何能達到這目的之解法都OK啊!

Update 3:

YogiBear大大,沒錯沒錯...

我找到都是寫outlook的,都不齊全.

Update 4:

YogiBear大大:

執行巨集出現:

執行階段錯誤 '91':

沒有設定物件變數或With區塊變數

我按偵錯後程式碼停在:

cdo = CreateObject("CDO.Message") 這行

Update 5:

Yogi大大,真的太感謝您啦!我在家試OK了,明天去公司試試看...可不可以再請教您一個小問題:

我知道收件人如果為多人要把mail address用分號隔開,那,收件人可不可以用變數啊,要怎麼寫:

是不是:

p1= x1@xxx.xxx

p2= x2@xxx.xxx

.

.

.

.To= "p1; p2"

或是其他寫法

Update 6:

YogiBear大大:

您誤會我的意思啦!

我是說,如果收件人不固定是某人,所以我要用變數,先指定p1是x1@xxx.xxx及p2是x2@xxx.xxx

然後要把p1和p2放到收件人裡要怎麼寫呢?或是不能這樣用呢?

Update 7:

YogiBear大大:

一切都快大功告成,但出了一個問題,我寄出的信箱是x1@aaa.com,如果收件人是x@bbb.com就不能寄出(但若同是x2@aaa.com則可寄出),出現的訊息是:

執行階段錯誤 '-2147220977 (8004020f)' :

伺服器拒絕一個或多個收件者地址。伺服器的回應為 : 554 5.7.1

: Relay access denied

這該如何解呢?

Update 8:

修正最後一行

<x@bbb.com> : Relay access denied

Update 9:

YogiBear大大:

我是用公司的mail.hxxxxs.com.tw(最終要用的),也有用遠傳3.5G無線上網的試smtp.fetnet.net一樣不行,在家是用中華電信msa.hinet.net,我在家用中華電信試寄到公司的mial是可以的,不過最終公司的才是要用到的.

2 Answers

Rating
  • chien
    Lv 7
    9 years ago
    Favorite Answer

    當然有解

    但要看誰來解!

    還有你願意接受何種解法。

    2011-10-04 09:17:25 補充:

    你是想要設計一個巨集

    能讓 [開啟中的 excel 檔案] ( 寄出自己 )

    直接以附件寄出去嗎?

    2011-10-04 15:09:38 補充:

    在我的 FB 的網誌裡

    http://www.facebook.com/pages/YogiBear/27067771629...

    去看吧。

    2011-10-06 12:25:09 補充:

    這個可以使用 VBA 引用 CDO 來完成

    我的專頁裡的網誌中有程式碼

    https://www.facebook.com/pages/YogiBear/2706777162...

    其中只要修改這三行

    .Sender = "寄件者姓名"

    .From = "寄件者信箱"

    .To = "收件者信箱"

    還有這一行,看你是用哪家 ISP

    .Configuration(cfg & "smtpserver") = "ms1.hinet.net"

    2011-10-06 18:05:05 補充:

    忘了問你 office 的版本

    2011-10-06 18:05:36 補充:

    我的是 2003

    2011-10-06 18:39:26 補充:

    阿 是這樣啦

    Set cdo = CreateObject("CDO.Message")

    我在貼碼時,被吃掉好幾個字。

    2011-10-06 18:39:50 補充:

    少了 set 3個字。

    2011-10-06 21:57:36 補充:

    .CC = "a@b.com ; x@b.com"

    用 ; 分隔

    2011-10-06 21:57:54 補充:

    分 號

    2011-10-06 23:05:16 補充:

    .CC = p1 & " ; " & p2

    2011-10-07 12:08:15 補充:

    請問你是用哪個 smtp server

    網路 isp 是哪家

    2011-10-07 13:53:51 補充:

    如果你的公司是使用 中華電信

    那你就直接用 msa.hinet.net 或 ms1.hinet.net

    不一定要用公司的 mail server

    2011-10-07 13:59:04 補充:

    我剛看了遠傳的說明

    使用 smtp.fetnet.net 需要通過驗證

    ' SMTP Server 如需登錄,請設定帳密。

    .Configuration(strCfg & "sendusername") = "usr"

    .Configuration(strCfg & "sendpassword") = "pwd"

    上面 2 行要設定遠傳的帳密 ( 行首的 ' 要去掉 )

    遠傳的說明在此 http://ddm.fetnet.net/OTA/pages/Setup/OTA_pop.html

  • 9 years ago

    相當複雜~~~不容易~~~還不是用OUTLOOK 更不容易~~

Still have questions? Get your answers by asking now.