
私は「緑のパスワードがなくnanacoをお持ちの方」です。
カード記載の番号にはvbaで値を入れることはできるのですが、
nanaco番号に値を入れることとログインボタンを押すことができません。
**********************************************
Sub nanaco()
Dim objIE As InternetExplorer
Dim myObj As Object
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True
objIE.navigate "https://www.nanaco-net.jp/pc/emServlet"
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.document.readyState <> "complete"
DoEvents
Loop
objIE.document.all("XCID").Value = "12345"
objIE.document.all("SECURITY_CD").Value = "Password"
For Each myObj In objIE.document.forms(0).all
If TypeName(myObj) = "HTMLInputElement" Then
If myObj.alt = "ログイン" Then
myObj.Click
Exit For
End If
End If
Next
Set objIE = Nothing
End Sub
**********************************************
これだとまずall("XCID").Value でエラーになります。
ソースでは、
<input name="XCID" tabIndex="1" class="txtBoxLogin" accessKey="1" type="text" maxLength="16" value=""/>
となっておりますが、同じコードが二つあるからエラーになるのでしょうか?
all("SECURITY_CD").Value
は問題なくできます。
ソースにも、SECURITY_CDは一つしかないです。
次にログインボタンも二つあるのですが、
For Each myObj In objIE.document.forms(0).all
If TypeName(myObj) = "HTMLInputElement" Then
If myObj.alt = "ログイン" Then
myObj.Click
Exit For
End If
End If
Next
このコードを実行すると、多分上の方のログインボタンが押されてるようです。
なので、
Dim 二つ目 As Boolean
For Each myObj In objIE.document.forms(0).all
If TypeName(myObj) = "HTMLInputElement" Then
If myObj.alt = "ログイン" Then
If 二つ目 = True Then
myObj.Click
Exit For
End If
二つ目 = True
End If
End If
Next
に変更してみたのですが、
どうやら
If myObj.alt = "ログイン" Then
になるのは、1回しかないようです。
うーん、うまくできません。
ご教授よろしくお願いします。

No.1ベストアンサー
- 回答日時:
rvnaclnvlhmrさん
こんにちは。
nameは普通ユニークだと思ったのですが同じ名前を2つ使っているのですね。
それでもnameで定義されているので簡単に対処できます。
objIE.document.all("XCID").Value = "12345"
objIE.document.all("SECURITY_CD").Value = "Password"
For Each myObj In objIE.document.forms(0).all
:
Next
↓↓↓↓↓↓
objIE.document.all.XCID(1).Value = "12345"
objIE.document.all.SECURITY_CD.Value = "Password"
objIE.document.all.ACT_ACBS_do_LOGIN2.Click
※objIE.document.all.XCID(0).Value … 1つ目のanaco番号入力エリアです。
注)objIE.document.all("XCID")(1).Value = "12345"
でもOKですが、上記の方がちょっとはスッキリしている?と思います。
お試し下さい。
With objIE.document.all
.XCID(1).Value = 会員番号
.SECURITY_CD.Value = Password
.ACT_ACBS_do_LOGIN2.Click
End With
にしたらうまくできました!
nameが二つある場合は、インデックスをつければいいのですね。
ACT_ACBS_do_LOGIN2についてもソースをよく見てみたらありました。
実は私、以前にもjcctairaさまにvbaの事でご回答いただきました。
以前のIDはパスワードがわからなくなりログインできなくなってしまったので、違うIDを使って質問しました。
でも色々試してみたら以前のIDのパスワードがわかったので、
jcctairaさまに過去にご回答いただいた分もやっとお礼できました!
(ZXEARIZUCC7です。遅くなってすいません)
何度もご回答いただけて助かります!
画像のねこちゃん可愛いです!
ありがとうございました!!!
No.2
- 回答日時:
# 上手く行ったなら解決済みにされた方がいいのではと。
objIE.document.forms(1).Item("XCID").Value = "12345"
objIE.document.forms(1).Item("SECURITY_CD").Value = "Password"
objIE.document.forms(1).all("ACT_ACBS_do_LOGIN2").Click
とも書けますね。
---
> nameは普通ユニーク
Idの方はUI Automationの AutomationId として検索としても使われるのでユニークなのですが、nameはForm毎に同名なのは結構ある様です。
(Twitterのログインページも同じ類)
閉め忘れてました
大変失礼しました
一つのページ内で
Nameは複数使われることがあるのですね。
勉強になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Javascriptで定期的にF5を押す...
-
SafariのIframeで高さが取得で...
-
イベントが初めの一回しか起き...
-
関数名をテキストから読み込む...
-
google apps scriptの終了のさせ方
-
配列の大括弧と丸括弧はどう違う?
-
シューティングゲームの作り方
-
setTimeoutによる繰り返しが途...
-
jspからjavascriptの変数引継ぎ
-
配列の1要素を代入した変数を使...
-
[初心者]javascriptのfor文でな...
-
htaccessのリダイレクトがルー...
-
Matlabで自作関数をオーバーロード
-
Boolean型配列中のTrueの有無を...
-
APIを使って埋め込んだグーグル...
-
Ajaxにおける非同期通信で、数...
-
IE11だけ、currentTimeが効きま...
-
javascriptのreplaceについて
-
食材の期限を管理するためにGAS...
-
vb.netでの記述方法について 以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLでのAttributeを持ったNode...
-
javascriptの基本的なことだと...
-
Latexに関する質問です。
-
onClickイベントの変更方法
-
webページ上のTabキーの動き
-
ラジオボタンでreadonlyの切替え
-
Null またはオブジェクトではあ...
-
excle VBA とweb上の検索を利用...
-
乗換案内 VBAで操作したい
-
UWSCでオンクリックのボタンを...
-
Javascriptで定期的にF5を押す...
-
DOM要素を削除しても、イベント...
-
JavaScript window.openで開く...
-
TexでΣの添え字の位置直し
-
LaTeX:数式を等号揃えにする方法
-
mousewheelイベントについて
-
removeEventListenerの必要性
-
IE11 javascriptについて
-
ルパン
-
onload時にPostBackを発生させ...
おすすめ情報