質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

2563閲覧

VBAでGmailの操作をしたい

engawa_oishii

総合スコア0

Gmail

GmailとはGoogleによって提供されているウェブメールのサービスのことです。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/05/23 01:28

編集2020/05/23 01:31

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ページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
sousuke

総合スコア3830

engawa_oishii👍を押しています

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

engawa_oishii

2020/05/23 11:49

ご回答いただきありがとうございます。 >「IE起動からGmailの新規メール送信」をしないといけないのでしょうか? そうですね・・・。 今回は勉強目的で作ったプログラムなので、IE上の本文欄にテキストを入れる方法を知りたいです。。。 ただ、ご回答いただいたCDOを使ったメール送信の方法は知らなかったので、 これはこれで自分も使用させていただきますw
guest

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

engawa_oishii

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問