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

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

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

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

Q&A

解決済

4回答

623閲覧

VBAにて自動操作は可能でしょうか?

heppokory

総合スコア7

VBA

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

0グッド

0クリップ

投稿2018/04/11 01:16

編集2018/04/11 05:44

現在、SeleniumとPythonを使用し自動化を作成しているのですが、
調べている途中、「VBAなら現在開いているIEのページの操作が可能」と言う記事を
見つけました。実際そこに張ってあったソースを実行すると、テキストボックスに
指定文字を挿入することが出来ました。

そこで、以下の様なことはVBAで実行可能なのでしょうか?
VBAに触れた事がない為、どこをどう調べていいか解らない状態です。

やりたいこと

①  現在の開いているIEのページの操作
②  セルに開いているページのテキストボックス(nameやclassを書き出す)を検索
or手動で対象のnameやclassを書き出す
③  ②で書き出した対象のテキストボックスに、他のセルに書かれている[文字]をひとつずつ全てのテキストボックスに
入力していく
④  「次へ」ボタンを押した際の、キャプチャーを取得
⑤  [文字]の数だけ繰り返す

ご教授お願い致します。

----追記----
皆さんご回答ありがとうございます。
参考サイト助かります。その辺りから調べてみようと思います。

「VBAなら現在開いているIEのページの操作が可能」
上記にこだわっているのは、実行サイトが、ログイン後に操作を行うサイトでして、
排他制御が掛かっているため、直URLだとエラーページに遷移するようになっています。ですのでVBAならっと思い質問させて頂きました。

また、キャプチャなのですが、エラーメッセージの判定を行いたい為、
キャプチャと安易に言ってしまったのですが、難しいようなので、他の方法で
取得可能か調べて見ます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

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

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

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

m.ts10806

2018/04/11 01:19

参考にした記事を提示願います。
defghi1977

2018/04/11 01:27

キャプチャが鬼門かな
heppokory

2018/04/11 04:02

キャプチャが難しいですか、、、エラーメッセージを確認さえできればいいのですが
m.ts10806

2018/04/11 04:07

「vba ie スクリーンショット」で検索すると出てくるのは出てきますね。どこまでの精度のものが必要化はわかりませんが。
heppokory

2018/04/11 05:25

調べて頂きありがとうございます。早速検索してみます
guest

回答4

0

すべて可能です。
VBAだけて可能ですし、VBAからSeleniumを使用して操作することも可能です。

WEB検索すればいくらでも解説やコード例が見つかりますので、それを参考にすればいいかと。

追記

VBAだけでする場合、mts10806さんが適切なサイトを紹介してますので、Selenium を利用する場合の参考サイトを。
Excel/VBA : VBA Seleniumを利用してWeb情報を取得(利用準備編) | DN-Web64

投稿2018/04/11 01:26

編集2018/04/11 01:46
hatena19

総合スコア33715

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

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

heppokory

2018/04/11 05:13

ご回答ありがとうございます。 VBAからSeleniumも操作が可能なのですね! 参考にさせていただきます。
guest

0

ベストアンサー

VBAによるIEの操作は、かなりレガシーな機能です。どちらかというと、ブックマークレットで実現するほうが情報が集まりやすいかもしれません。Webブラウザのオートメーションは、Webアプリのテストで使う技術も使えますし、Windows+IE限定なら.Net(C#とかVBとかPowerShell)経由でコントロールする方法もあります。

VBAによるコントロールの話しをします。
ExcelなどOffice製品に搭載されているVBAでコントロールすることもできますし、もともとWindowsに付いてくるWindows Scripting Hostからコントロールすることもできます。IEはCOMのインターフェースを持っているので、比較的簡単にVBAからコントロールできます。ただ、「現在の開いているIEのページの操作」より「VBAで指定したURLをIEで開いて、ページを操作」するほうが簡単です。例えば、下記のコードはIEでGoogleの検索ページを開き、検索語を入れて、[Google検索]ボタンを押します。

Dim complete complete=False Set IE = WScript.CreateObject("InternetExplorer.Application","IE_") IE.Visible=True IE.Navigate "https://www.google.co.jp" Do 'ロードが完了するまで待つ WScript.Sleep 100 Loop while complete=False complete=False IE.document.all.q.InnerText = "InternetExplorer VBA automation" IE.document.all.btnK.Click Sub IE_DocumentComplete(pdisp,surl) complete=true 'ロード完了時に発生 End Sub

残念ながら、MSDN Libraryにもリファレンスが見つけられない(移動した?)ので、 InternetExplorer.application や Document.Allといったキーワードで検索すると情報を見つけられると思います。

で、ご質問にもどりますが、セルに開いているページのテキストボックスの検索やテキストボックスへの入力などはDOMの操作で可能です(例示したコードのIE.document.all.q.InnerTextといったあたり)。画面のキャプチャーは、VBA単独では難しいかもしれません。一番簡単なのは画面キャプチャするフリーのソフトを探してきてVBAで実行することかな。ProntScreenキーのエミュレートができれば、クリップボード経由で取得できるかも。

【2018/04/21追記】
日本語によるDOMのドキュメントは下記にありました。
https://msdn.microsoft.com/ja-jp/library/cc392328.aspx
Internet Explorerの最新情報は英語ですが、下記にあります。
https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/

投稿2018/04/11 02:25

編集2018/04/21 02:08
tohshima

総合スコア374

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

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

heppokory

2018/04/11 05:12

ご回答ありがとうございます。 >一番簡単なのは画面キャプチャするフリーのソフトを探してきてVBAで実行することかな。 こんな使い方もあるんですね、そのあたり調べてみます。 >「現在の開いているIEのページの操作」より「VBAで指定したURLをIEで開いて、ページを操作」するほうが簡単です。 指定したURLで操作したいのですが、実行サイトがログインして対象のページに遷移してって感じなので、今開いているサイト操作がVBAなら出来る!?ってサイトなどで見つけて、質問させて頂きました。 やはり、VBAを一から学ばないと難しそうですね
guest

0

VBAって、Excelとか、MSOffice製品の中で動くスクリプト言語ですが、そんでいいのでしょうか

まあ、たしかにIEの操作はできますが、それはWin32APIを実行できる言語ならどれでもできることです。
VBAだからできる、ではなくて、VBAでもできる、ってことなんですねー

投稿2018/04/11 01:24

y_waiwai

総合スコア87774

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

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

heppokory

2018/04/11 05:17

ご回答ありがとうございます。 たまたま見ていたサイトなどで、「今開いているサイトをVBAで操作が出来る」と記載されていて、実際貼り付けたら操作が可能だったので、質問させて頂きました。VBAだかって訳ではないのですね。参考になりました。
guest

0

「質問への追記・修正の依頼」にはコメントしましたが、下記、参考にできるかもしれません。

どこまでVBAでやろうとしているかは分かりませんが、
何となく探して見つけたその辺の記事をコピペしてうにゃうにゃするより基本をしっかり理解できると思います。

私はVBAは実務そのものというより作業効率化のために使うことが多いですが、
上記サイトにはよくお世話になっています。あとこことか。

投稿2018/04/11 01:25

編集2018/04/11 01:26
m.ts10806

総合スコア80850

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

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

heppokory

2018/04/11 05:15

ご回答ありがとうございます。 >何となく探して見つけたその辺の記事をコピペしてうにゃうにゃする こればっかやってました汗 参考にさせていただきます。
m.ts10806

2018/04/11 05:20

他の方の回答で気づきました。 「今開いているブラウザの操作」をしようとしてたんですね。 紹介したサイトだとあくまで「VBAからブラウザを開く」になっていました。 失礼しました。 まあでも、VBAから入力、画面遷移も可能のようですし、しっかり組めば問題ないとは思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問