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

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

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

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

Q&A

1回答

1429閲覧

EXCELのVBAでブラウザ上の文字を取得して、条件分岐したいです。

nazonazo

総合スコア5

VBA

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

0グッド

0クリップ

投稿2020/06/17 01:18

VBAマクロを使う目的は、ブラウザにアクセスして、一括で入札金額を入力するためです。

現在ここまで完成してますが、入力される金額を、ブラウザ上の開始金額を参照して、
1000と書いてあれば、1000と入力する。もし2000だったら2000、3000だったら3000と条件分岐して入力したいのですが、その方法がわかりません。

現時点でのコードを貼りますので、アドバイス頂ければと思います。

Sub yahoo_auction_sample1()
'---コード1|インターネットに接続してブラウザを開く---
Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True

'---コメオクページ開く--- objIE.navigate "https://www.komehyo-auction.com/auctionManagement/xhtml/wc/WC11001L.xhtml" Call IEWait(objIE) 'IEを待機 Call WaitFor(2) '3秒停止 '---ログイン--- Dim objtsugi As Object For Each objtsugi In objIE.document.getElementsByTagName("span") If InStr(objtsugi.outerHTML, "ログイン") > 0 Then objtsugi.Click Call WaitFor(3) Exit For End If Next '---オークション参加---

Dim objsanka As Object
For Each objsanka In objIE.document.getElementsByTagName("label")
If InStr(objsanka.outerHTML, "オークション商品") > 0 Then
objsanka.Click
Call WaitFor(3)
Exit For
End If
Next

'---選択--- Dim objsentaku As Object For Each objsentaku In objIE.document.getElementsByTagName("button") If InStr(objsentaku.outerHTML, "選択") > 0 Then objsentaku.Click Call WaitFor(4) Exit For End If Next '---商品検索--- Dim objkensaku As Object For Each objkensaku In objIE.document.getElementsByTagName("button") If InStr(objkensaku.outerHTML, "商品検索へ") > 0 Then objkensaku.Click Call WaitFor(6) Exit For End If Next '---開始額並べ替え--- Dim objkaisi As Object For Each objkaisi In objIE.document.getElementsByTagName("th") If InStr(objkaisi.outerHTML, "開始額") > 0 Then objkaisi.Click Call WaitFor(3) Exit For End If Next '---20箇所一括入力--- Dim s As String

s = "2000"
Dim objtag, objsubmit As Object
For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-0-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-1-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-2-net_bid_price""") > 0 Then
objtag.Value = s
End Ifa
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-3-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-4-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-5-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-6-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-7-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-8-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-9-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-10-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-11-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-12-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-13-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-14-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-15-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-16-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-17-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-18-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

For Each objtag In objIE.document.getElementsByTagName("input")
If InStr(objtag.outerHTML, """f-a-DetailData1-19-net_bid_price""") > 0 Then
objtag.Value = s
End If
Next

End Sub

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

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

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

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

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

ttyp03

2020/06/17 02:46

わからないことを絞ってください。 ブラウザ上の開始金額を取得する方法がわからない? 条件分岐する方法がわからない? 入力させる方法がわからない? また条件分岐させることを前提にしていますが、取得した金額を入力するのではダメなんですか?
nazonazo

2020/06/17 02:53

確かにわからないことが多すぎました。 VBAの条件分岐、入力させる方法、金額を取得する方法もわかりません。 取得した金額を入力する事ができれば万々歳です。
guest

回答1

0

修正依頼についているコメント”取得した金額を入力する事ができれば万々歳”から、
以下2点について述べることにします。
多分、ご期待通りの回答ではないです。

①金額を取得する方法
②取得した金額をそのまま入力する方法

①についてですが、
これは上記コードを見てると取得できる様に思えます。

objtag と同様のやり方でも良いですが、
まずは対象の金額を持っているエレメントを取得します。

後はローカルウィンドウでプロパティを眺めれば、
どのプロパティが金額を持っているか分かると思います。
でなくとも、ブラウザに表示されているのであれば HTML から分かると思います。

もし、取得した値の一部に対象の金額が存在して、
金額のみの抽出方法が分からないといった旨の質問であれば、
質問の仕方を変えるべきと思います。

あと、②についですが、
「objtag.Value = s」で出来てるんじゃないですか?
この箇所以外で入力をしたいのでしょうか?

ついでに質問の内容とは無関係ですが、
20個一括入力の個所は 0 ~ 19 のループで分量を20分の1位にできます。
まるごとネストするよりはサブルーチンとして切り出した方が無難かなと思います。
でなくても、質問の際は重複部分は省略頂いた方が良いかと思います。

ご自身で分からないことが多すぎるとコメント頂いていますが、
どちらかと言うと、質問したい、解決したい内容が明確に伝わっていないのが問題かなと思います。

「現在ここまで完成してますが、」でコードを丸ごと相手に解読させるのも失礼かなと思います。

どの部分のコードを実行した結果、何が取得出来て、何が実行出来ていますが、
でも自分はこういう結果が欲しいんだ、みたいな具体的な質問の方が良いです。
質問を投稿するフォームにもその様な記載はありましたよね。

でなければ、ご期待通りの回答は中々得られないかなと。

投稿2020/07/01 14:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問