Excel VBA + Selenium Basic + Gmail

935 views
Skip to first unread message

土居浩

unread,
May 9, 2018, 12:04:08 PM5/9/18
to 日本Seleniumユーザーコミュニティ

前提・実現したいこと

Excel VBA + Selenium Basic  を用いてGmail でメールを送信したいのですが、
以下の制御ができず困っています。
どなたか解決策をご教授いただけませんでしょうか

 発生している問題・エラーメッセージ

・「別のプログラムでOLEの操作が完了するまで待機を続けます。」のエラーメッセージが表示されることがあるので回避したい
・Excel のワークシート内のグラフを画像としてメール本文に貼り付けたい
・貼り付けたグラフをデフォルトのサイズから元にサイズにもどしたい

 該当のソースコード

Excel 2016 VBA + Selenium Basic

Sub SendGmail()

Dim driver As New WebDriver
Dim keys As New keys
Dim elm As WebElement

Dim myGraph As ChartObject

'グラフをコピーする
Set myGraph = ActiveSheet.ChartObjects(1)
myGraph.CopyPicture appearance:=xlScreen, Format:=xlBitmap

'Chomeを起動する
driver.Start "chrome"
driver.Get "https://mail.google.com/mail/u/0"

'ログイン(メールアドレスを入力)する
Set elm = driver.FindElementByName("identifier").SendKeys("******@gmail.com")

'次へボタンを押下する
Set elm = driver.FindElementByXPath("//*[@id=""identifierNext""]/content/span")
elm.Click

'パスワードを入力する
Set elm = driver.FindElementByXPath("//*[@id=""password""]/div[1]/div/div[1]/input").SendKeys("****")

'次へボタンを押下する
Set elm = driver.FindElementById("passwordNext")
elm.Click

'作成ボタンを押下する
Set elm = driver.FindElementByClass("z0")
elm.Click

'本文へペーストする
Set elm = driver.FindElementByCss("div [class=""Am Al editable LW-avf""]")
elm.SendKeys (keys.Control + "v")       '←ペーストできない

'Shift+←で画像を選択する
elm.SendKeys (keys.Shift + keys.ArrowLeft)

'画像をリサイズする
Set elm = driver.FindElementByXPath("//*[@id=""original-resize-image""]")
elm.Click

End Sub

 試したこと

グラフ画像を一旦ペイントへ貼り付け、それを再度クリップボードへコピーするとGmailへ貼り付けができるようです。

伊藤望

unread,
May 11, 2018, 7:05:29 AM5/11/18
to 日本Seleniumユーザーコミュニティ
伊藤です。

Selenium Basicは触ったことがないためわかりませんが、
他の言語のDriverだと問題は起きないのではないかと思います。

個人的には、

- OLEとか複雑なトラブルが多そうである。
- コミュニティには知見を持っている人がほとんどいない(たぶん)
- Issueが結構上がっているにも関わらず、2016年3月以降メンテナンスされていないようである( https://github.com/florentbr/SeleniumBasic )

ということで、可能なら別の言語で書き直す方が良いと思います。
(Excelに画像を貼ってメール送信なども、JavaやPythonでも頑張ればなんとかなると思います)

どうしてもExcel VBAでということでしたら、
に質問してみるのが現実的かと思います。

土居浩

unread,
May 11, 2018, 11:09:53 AM5/11/18
to 日本Seleniumユーザーコミュニティ
伊藤様

VBAの知識しかなく、他の言語からのアプローチ、
などの発想ができませんでした。
貴重なアドバイスいただけたこと、大きな収穫です。
ありがとうございました。


2018年5月10日木曜日 1時04分08秒 UTC+9 土居浩:
Reply all
Reply to author
Forward
0 new messages