※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAとVBScript)
エクセルVBAとVBScriptでのメール送信自動化について
このQ&Aのポイント
エクセルVBAとVBScriptを使用して、メール送信を自動化する方法について説明します。
エクセルVBAからVBScriptを経由してメールを送信する際、エクセルブックを2重起動する問題が発生します。
エクセルVBAから直接VBScriptに引数で値を渡す方法や、VBScriptからエクセルブックを起動せずに値を取得する方法についても考えています。
WinXP/Pro エクセル2002使用です。
VBScriptで下記のメール送信のプログラムを作り、
それをエクセルVBA→BATファイル→VBScript(→エクセルVBAに戻る)という流れで自動化させましたが、下記のコードでは、現在進行中のエクセルVBAとは別のブックを作るのでうまくいきません。
(エクセルブックを2重起動してしまいます)
Set objExcel =GetObject( "d:\auto\aaa.xls")
Dim stradrs
Dim strkk
Dim strjikan
with objExcel
stradrs = .Worksheets("Sheet1").Cells(5,1).Value
strkk= .Worksheets("Sheet1").Cells(4,1).Value
strjikan = .Worksheets("Sheet1").Cells(4,2).Value
end with
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "***@***.com"
objEmail.To = stradrs
objEmail.Subject = "表題"
objEmail.Textbody = "内容"
objEmail.AddAttachment("d:\auto\" & strkk & strjikan & ".doc")
objEmail.Send
Set objEmail = nothing
Set objExcel = nothing
目的は、最初に立ち上げている(VBScriptを呼び出したVBAを実行中の)エクセルから値を取得したいのです。
下記いずれかの方法によると思っています。
(1)エクセルVBAから直接VBScriptに引数で値を渡すことは可能でしょうか?
(2)VBScriptからエクセルブックを起動させずに値を取得することは可能でしょうか?
値はテキスト文字です。
何卒よろしくお願いします。
お礼
BLUEPIXY 様早速のご回答ありがとうございます。 そもそも論の選択肢が可能であることを間違えて考えてました。 VBScriptと同じような記述でVBAからも送信できました。 VBScriptの勉強を始めたばかりでできることととできないことの整理がまだできておらずご迷惑をお掛けし、疑問まで解決していただきありがとうございました。 今後ともよろしくお願いします。