[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マクロでoutlookの立ち上げ、メール作成』(謎)
表題の件、教えてください。
マクロで自動メール作成をしたいのですが、
謎の現象が起きたので、お心当たりの方がいらっしゃれば教えて下さい。
下記のコードの、To , CC , Subjectの指定部分ですが、当初Valueを省略していた所、
とある人は正しくメールが作成され、別の人は.To〜の所でエラーで止まりました。
更に、エラーで止まった人も、outlookを一度閉じてマクロを稼働するとエラーなく動きます。
そこで、Valueを追加してみた所、全ての人がoutlookを立ち上げた状態でマクロを稼働しても
エラーなく動くようになりました。
何が起こっているのか調べても分からなかったのですが、分かる方がいらっしゃいましたら教えて下さい。
Dim oApp As Object
Dim mailItemObj As Object
Set oApp = CreateObject("Outlook.Application")
Set mailItemObj = oApp.CreateItem(0)
With mailItemObj
.To = BN.WS.Cells(2,3).Value
.CC = BN.WS.Cells(3,3).Value
.Subject = BN.WS.Cells(4,3).Value
.Display
< 使用 Excel:Office365、使用 OS:Windows10 >
とても参考になると思いましたので。。。 難しいですね。Value ^^; << _ _ >> (隠居Z) 2022/01/14(金) 07:51
WSにシートを割り当てるときに、ブックの指定は必要の場合がありますが、
使うときには、WSだけでよいはずです。
(γ) 2022/01/14(金) 08:01
r様
ありがとうございます。
すみません、昨日はsheetの記載を端折ってしまいましたが、
実際は下記のようにしています。
(bookのみworkbook型へ格納、sheetは直接記載)
Dim BN As Workbook
Set BN = ThisWorkbook
Dim oApp As Object
Dim mailItemObj As Object
Set oApp = CreateObject("Outlook.Application")
Set mailItemObj = oApp.CreateItem(0)
With mailItemObj
.To = BN.Worksheets("sheet1").Cells(2,3).Value
.CC = BN.Worksheets("sheet1").Cells(3,3).Value
.Subject = BN.Worksheets("sheet1").Cells(4,3).Value
.Display
(謎) 2022/01/14(金) 08:44
どのようなエラーが発生していたかで、 ある程度分かると思いますが、どのようなエラーでしたか?
私のレベルで考えられることは、 Toプロパティは文字列型ですので、それ以外の型が入力されたか、 MailItemオブジェクトが空(nothing)であれば、.Toのところで 止まると思います。
結果、.Value追加で問題が起きていないのでしたら、型の問題かな、と 思いますが、論理的な解説までは出来ません。
Range()と記述すると、忖度して.Value(セルの値)としてくれますが、 本来はオブジェクトなので、記述する場合、.Valueや.textなどプロパティを 明示的に記述したほうがいいかと思います。 あくまで忖度なので、1から100まで自身の思った通りとはなりませんから。
(tkit) 2022/01/14(金) 09:30
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.