[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『自動メール送信がタスクスケジューラで動作しない。。』(yoshi)
VBAをかじったぐらいの者です。
Excel VBAにて下記を組んで、Auto_Openに記述して、自動メール送信をしています。
手動にて動作させる分には動作するのですが、タスクスケジューラにて動作させようとすると、動作しません。。
なにがいけないのか。。全然わからない状態です。。
すみませんが、ご教授をお願いいたします。
コード:
Dim Ap As Object Dim M As Object Dim strMOJI(2) As String Dim Ldate As Date Application.DisplayAlerts = False
ActiveWorkbook.UpdateLinks = xlUpdateLinksAlways
Ldate = Date - 1 Worksheets("Report(Nr)").Select Range("E2").Value = Ldate Range("A1:Y72").Select Selection.CopyPicture Appearance:=xlScreen, Format:=xlBitmap
'ここまではメールに張り付けるデータを作成しており、動作するのを確認しております。
Set Ap = CreateObject("Outlook.Application") Set M = Ap.CreateItem(0) strMOJI(0) = "各位 お疲れ様です。 " & Range("E2").Value & " の状況を報告いたします。" & vbCrLf strMOJI(1) = vbCrLf & " 以上です。" & vbCrLf strMOJI(2) = strMOJI(0) & strMOJI(1) strMOJI(2) = Replace(strMOJI(2), vbCrLf, "<br>") M.BodyFormat = 3 'リッチテキスト形式 M.HTMLBody = "" & strMOJI(2) & "" 'メールの本文 M.To = Range("AB7").Value & ";" & Range("AC7").Value 'To アドレス M.Cc = Range("AB8").Value & ";" & Range("AC8").Value 'Cc アドレス M.Bcc = Range("AB9").Value & ";" & Range("AC9").Value 'Cc アドレス M.Subject = Range("E2").Value & " 稼働報告" '件名 M.Display '画面を表示
n = Len(strMOJI(0)) With Ap.ActiveInspector.WordEditor.Windows(1).Selection '貼り付け .GoTo 3, 1, 2 .Paste End With
M.Send
ActiveWorkbook.Save
Application.Quit
ThisWorkbook.Close False
< 使用 Excel:Excel2010、使用 OS:Windows7 >
>'ここまではメールに張り付けるデータを作成しており、動作するのを確認しております。 ↑ この記述と矛盾するのであまり自信はないですけど、 標準モジュールのAuto_Open() に書かず、 ThisWorkbookモジュールのWorkbook_Open() に書いてみたらどうですか。
(半平太) 2014/04/14(月) 15:58
すると、「ユーザーがログオンしている時のみ実行する」だと、動作しました。
ただ、ログオフしているときも動作させたいため、
「ユーザーがログオンしているかどうかにかかわらず実行する」にチェックすると、
また動作しなくなってしまいました。。
なにがあるんでしょうか。。わからない状態です。。
(yoshi) 2014/04/15(火) 09:23
タスクスケジューラで実行する場合、すべての処理が通常手作業と同等にできるわけでは なく、機能によっては制約があります。
今回だとログオフした状態だと、表示すべきウィンドウがないので xlApp.Visible = True はエラーになると思います。 これをはずしてみて動作するか確認してどうでしょうか。
(Mook) 2014/04/15(火) 11:53
そういうことなんですね。。
しかし。。IF文部分を外したのですが、状況は変わらずで、ログオン時のみ動作しました。
ログオフ時では、開始してすぐに終了しており、タスクマネージャーのプロセスで見る限りExcelは起動してきてません。。
コードの部分にもダメなものが入っているってことですかね。。
(yoshi) 2014/04/15(火) 12:40
検索した範囲ではタスクスケジューラで EXCEL を起動して処理という話もあるので、 まったくできないということもないとは思うのですが、ステップ単位でどこまで動いて いるか、確認するのが手っ取り早い気がします。
一行ごとにファイル出力して、どこでエラーが起きているか、確認してはどうでしょうか。
処理の先頭で Set debugFile = CreateObject("Scripting.FileSystemObject").CreateTextFile("C:\ExcelMailDebug.txt",True) 各処理の間に、 debugFile.WriteLine "××× 実行"
のようにして動かしてみれば、どこまで動いたか確認できると思います。 (Mook) 2014/04/15(火) 15:21
VBS案に行く前に、 Workbook_Open()案に変更したあと、 タスクスケジューラの全般タブにある □最上位の特権で実行する にチェックを入れてのテストもトライしてみましたか?
(半平太) 2014/04/15(火) 15:28
(Mook)さん
返信ありがとうございます。
こういうデバッグ勝利があるのですね。。勉強になります。
テストしてみます。
ありがとうございます。
(yoshi) 2014/04/15(火) 17:20
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.