VBAでIE起動からGmailの新規メール送信までを自動化したいと考えております。
IE起動~宛先入力までは上手くいくのですが、本文に文字を入力する処理がうまくいきません。
原因、解決方法がわかる方がいましたらご教授をお願い致します。
発生している問題・エラーメッセージ
実行時エラー'438': オブジェクトは、このプロパティまたはメソッドをサポートしていません。
該当のソースコード
Dim objInpTxtHonbun Set objInpTxtHonbun = .document.getElementsByClassName("Am Al editable LW-avf tS-tW") objInpTxtHonbun.Value = "test" ※宛先については下記コードで正常に処理されます。 Dim objInpTxtArea As HTMLTextAreaElement Set objInpTxtArea = .document.getElementsByName("to")(0) objInpTxtArea.Value = "test"
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
1
IEでやりたいとのことでしたのでわかったことを追記します。
取ろうとしているクラスの「Am Al editable LW-avf tS-tW」ですが、
firefoxの開発者ツールで確認したところこれはdivです。
divはinputではないためそもそもvalueを持っておらず、そのため
このアプローチでは入力することはできないと思います。
vba
1objInpTxtHonbun.Value = "test"
元の回答文
質問に対する直接の回答ではありませんがどうしてもVBAで
「IE起動からGmailの新規メール送信」
をしないといけないのでしょうか?
CDOを使えばメールの送信ならできるはずですが、いかがでしょうか。
GmailはやったことはありませんがSMTPサーバーの設定が正しければ通ると思います。
送信履歴を残したい場合はCC等で送信元のアドレスにもメールを送信することで済ませています。
私はこんな感じでメールを送ることが多いです。
vba
1Option Compare Database 2Option Explicit 3 4Private Const cdoSMTP As String = "http://schemas.microsoft.com/cdo/configuration/" 5Private Const cdoSMTPServer As String = cdoSMTP & "smtpserver" 6Private Const cdoSMTPServerPort As String = cdoSMTP & "smtpserverport" 7Private Const cdoSendUsingMethod As String = cdoSMTP & "sendusing" 8Private Const cdoSendUsingPort As Long = 2 9Private Const cdoBasic As Long = 1 10Private Const cdoSMTPConnectionTimeout As String = cdoSMTP & "smtpconnectiontimeout" 11Private Const cdoSMTPAuthenticate As String = cdoSMTP & "smtpauthenticate" 12Private Const cdoSendUserName As String = cdoSMTP & "sendusername" 13Private Const cdoSendPassword As String = cdoSMTP & "sendpassword" 14Private Const cdoLanguageCode As String = cdoSMTP & "languagecode" 15Private Const cdoXMailer As String = "urn:schemas:mailheader:X-Mailer" 16Private Const CustomXMailer As String = "VBA" 17Private Const cdoAnonymous = 0 18 19Public Function fncメール送信(ByVal ToAddress As String, ByVal FromAddress As String, ByVal Subject As String, ByVal TextBody As String, _ 20 Optional CcAddress As Variant, Optional BccAddress As Variant, _ 21 Optional ByVal Charset As String = "shift-jis", Optional Attachments As Variant) 22 23 Dim CDO_Message As Object 24 Set CDO_Message = CreateObject("CDO.Message") 25 26 Dim Attachment As Variant 27 28 With CDO_Message 29 With .Configuration.Fields 30 .Item(cdoSMTPServer).Value = SMTPサーバー 'SMTPサーバ 31 .Item(cdoSMTPServerPort).Value = 587 'ポート 32 .Item(cdoSendUsingMethod).Value = cdoSendUsingPort 33 .Item(cdoSMTPConnectionTimeout).Value = 60 34 .Item(cdoSMTPAuthenticate).Value = cdoBasic '認証 35 .Item(cdoSendUserName).Value = SMTPユーザー名 'ユーザー名 36 .Item(cdoSendPassword).Value = SMTPパスワード 'ユーザーのパスワード 37 .Item(cdoLanguageCode).Value = "shift-jis" '文字コード 38 .Update 39 End With 40 41 .MimeFormatted = True 42 .From = FromAddress 43 .To = ToAddress 44 45 If Not IsMissing(CcAddress) Then 46 .CC = CcAddress 47 End If 48 49 If Not IsMissing(BccAddress) Then 50 .BCC = BccAddress 51 End If 52 53 .Subject = Subject 54 .TextBody = TextBody 55 .TextBodyPart.Charset = Charset 56 .Fields.Item(cdoXMailer).Value = CustomXMailer 57 .Fields.Update 58 59 '添付ファイル 60 For Each Attachment In Attachments 61 .AddAttachment Attachment 62 Next 63 64 .Send 65 End With 66 67 Set CDO_Message = Nothing 68 69 Exit Function 70End Function
投稿2020/05/23 10:45
編集2020/05/24 07:54総合スコア3830
0
自己解決
遅くなりましたが、自己解決しました。
検証ツールを使用したところ、Gmailの本文のテキストは、divのタグで囲まれた要素に入ることがわかりました。
そこで、指定した要素オブジェクトの要素内のテキスト部分のHTMLコードを取得する「innerText」プロパティを使用したところ、本文にテキストが入ることが確認できました。
VBA
1Set objInpTxtHonbun = .document.getElementsByClassName("Am Al editable LW-avf tS-tW")(0) 2objInpTxtHonbun.innerText = Honbun
下記の回答が参考になりました。
ありがとうございます。
>firefoxの開発者ツールで確認したところこれはdivです。
>divはinputではないためそもそもvalueを持っておらず、そのため
>このアプローチでは入力することはできないと思います。
投稿2020/08/30 12:59
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/23 11:49