[[20060519155259]] 『注文書の自動メール送信』(てつ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『注文書の自動メール送信』(てつ)
質問内容
会社にて注文書をエクセルで一覧表を作成しています。
出張中などに注文の合計台数などを自動的(1時間に1度など)
で携帯にメール送信出来ないでしょうか?
よろしくおねがいします。

[エクセルのバージョン]
Excel2003,
[OSのバージョン]
WindowsXP,


 要望はよくあるようですが・・・明確に「これだ!」って回答は見つかりませんでした。
以下過去ログより。
【関連ログ】
[[20040723083053]] 『エクセルシートのFileから送信するには』(エクセラー)
[[20050216145631]] 『セル内容を指定時間にメール送る事できる?』(あい)
[[20050219162127]] 『エクセルファイルを添付してメールで送信したい』(POPPO)
[[20050510050926]] 『Excel上の電子メールアドレス宛に一括送信』(ま)
[[20050721231123]] 『添付ファイルをメールで送信するマクロ』(かずみ)
[[20050926184123]] 『マクロでエクセル添付』(香織)
[[20051011190614]] 『月曜と金曜に自動でエクセルをメールで送りたい』(まさ)
[[20051025212208]] 『メールについて教えてください。』(Syunpe)
 
ところで、不在中の「注文書」はどうやって作るのでしょう?
(みやほりん)(-_∂)b


受注書でした。
お客さんから頂いた注文の履歴確認です。

 この際呼び方は、重要ではありませんけどね。わたしが問うているのは、
「お客さんから頂いた注文」がどのような形であなたが不在中の会社に届き、
また、「お客さんから頂いた注文の履歴」がどのような形でExcelのブックへ入力され
るのか、ということです。
不在のときに誰かが代わりにExcelで入力を行っているのではないでしょうか。
誰かがやっているのなら、メールの送信をその人に頼めば、とも思ったものですから。
 
それはさておき、
[[20050926184123]] の[nak]さんのマクロを雛形に単純なメール送信マクロは
テストケースとして作ったものがあります。
送りたい内容がどのようにシートへ入力されているかをお知らせ下さい。
メール本文として送信するのなら、応用できるかもしれません。
(ケータイで見やすいかどうかは別にして)
(みやほりん)(-_∂)b 
 


(みやほりん)(-_∂)b さん 回答ありがとうございます

(不在のときに誰かが代わりにExcelで入力を行っているのではないでしょうか。)

(誰かがやっているのなら、メールの送信をその人に頼めば、とも思ったものですから。)

そうですね。でも出来れば自動でメールがおくれれば便利だと思ったので質問しています。

([nak]さんのマクロを雛形に単純なメール送信マクロ)

を見たのですが、どのように利用してよいのか解りません。

(送りたい内容がどのようにシートへ入力されているかをお知らせ下さい。)

事務員が日付と品番と数量を入れるだけの表があるだけです。
最上段に 現在の注文合計数量が出ています。
この数字だけをメールで送れればいいのですが。
宜しくお願いします。


 >最上段に 現在の注文合計数量が出ています。
[てつ]さんや事務員さんにはそれで通じるのかもしれませんね。
でも、残念ながらその表現では私には
「どんなシートのどのセル」が[てつ]さんの表現する「最上段」なのか伝わりません。
次のように表現してみてください。
Ex.
「Sheet1のセルA1:B2に入力してあるデータをメールとして送信したい」
 
(みやほりん)(-_∂)b

(みやほりん)(-_∂)b さん 回答ありがとうございます

Sheet1のセルAH3:AJ3に入力してあるデータをメールとして送信したいです。

(てつ)


 Microsoft OutLook2003が既定のメーラーと仮定します。
OutLookの ツール>オプション>メールセットアップで
「接続したら直ちに送信する」へチェックしておきます。
 
当該ブックを起動し、 Altを押しながらF11でVBEを起動します。
VBEのメニュー 挿入>モジュール>標準モジュール でモジュール挿入
下記のVBAコードへ挿入した標準モジュールへ貼り付けます。
 
 Sub MailSend()

     '////////////////////////////////////////
     '/// 宣言部
     '////////////////////////////////////////
     Const mySubject As String = "受注数量確認"             '*** タイトル
     Dim OutlookApp As Object                               '*** Outlookオブジェクト
     Dim myMailitem As MailItem                             '*** メールオブジェクト
     Dim myText As String                                   '*** 本文
     Dim mySheet As Worksheet                               '*** ワークシートオブジェクト

     '////////////////////////////////////////
     '/// 処理部
     '////////////////////////////////////////
     Set OutlookApp = CreateObject("Outlook.Application")    '*** Outlookオブジェクト生成
     Set myMailitem = OutlookApp.CreateItem(olMailItem)      '*** メールオブジェクト生成
     Set mySheet = ActiveWorkbook.Worksheets("Sheet1")          '*** ワークシートオブジェクト参照

     myMailitem.To = "**********@******.**.**"                  '*** 送信先アドレスを設定
     '*** メール件名及び本文の設定
     With mySheet
         myText = .Range("AH3").Value & "  /  " & _
                  .Range("AI3").Value & "  /  " & .Range("AJ3").Value
     End With
     myMailitem.Subject = mySubject
     myMailitem.Body = myText
     myMailitem.Send                                         '*** メール送信
'     OutlookApp.Quit                                         '*** Outlookを終了
     Set mySheet = Nothing                                   '*** シートオブジェクトを開放
     Set myMailitem = Nothing                                '*** メールオブジェクトを開放
     Set OutlookApp = Nothing                                '*** Outlookオブジェクトを開放
     Application.OnTime Now + TimeValue("01:00:00"), "MailSend"

 End Sub
 
(以上は先のトピックの[nak]さんのコードを参考にしました)
次にThisWorkbookモジュールをダブルクリックして、次のコードをモジュールへ
貼り付けます。
 Private Sub Workbook_BeforeClose(Cancel As Boolean)
     Call MailSend
 End Sub

 Private Sub Workbook_Open()
     Application.OnTime Now + TimeValue("01:00:00"), "MailSend"
 End Sub
 
以上の作業をして設計は終わり。いったん閉じて保存します。
次に、マクロを登録したブックを開くと、開いた時間を基準に1時間ごとに
メールを送信「しようと」します。
ここで、この自動化処理のジレンマが発生します。
私もやってみてはじめてわかったのですが。
OutlookVBAのヘルプには下記のようにあります。
 
/////////////////////////////////////////////////////////////////////////
Microsoft Outlook オブジェクト モデルを使用しているプログラムを実行して 
Send メソッドを呼び出すとき、プログラムがメッセージを送信しようとしている
ことを通知する警告メッセージが表示されます。このメッセージ画面で、このメッ
セージの送信を許可するかどうかを指定します。警告メッセージには、[はい] と
 [いいえ] の両方のボタンが表示されます。ただし、[はい] ボタンは、警告メッ
セージの表示後 5 秒経過するまで使用不可の状態になっています。[いいえ] を
クリックすれば、すぐに警告メッセージが消えます。
/////////////////////////////////////////////////////////////////////////
 
まあ、つまり何がいいたいか、というと、
ExcelVBAからOutlookでメールを送信しようとすると、メールアイテムを作成できま
すが、それを送信するかどうかの許可は人間が与えなければなりません。
(マクロウィルス対策と思われます)
 
つまり、送信するためにはクリックする人が必要なわけで、
この自動化では、送信する瞬間には人間が画面の前で待ち構えていなければ
ならないのです!!!
 
これって、便利なのでしょうか。
一定時間ごとに人間に同じ場所へ来るように強要するわけですから。
「編集し終わったら、保存する」ようにしてもらって、「保存時に同時に送信する」
ぐらいが代わりをする人にはかえって負担が少ないかもしれません。
(みやほりん)(-_∂)b

(みやほりん)(-_∂)b さん 

大変解りやすい内容でのご回答ありがとうございます。

また、問題点も同時に教えてもらい感謝しています。
とりあえず一度やってみます。

(てつ)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.