Sub loginaccesstrade()


ID = "otameshi"
Password = "ekuseru"



Const navOpenInNewTab = &H800
Set objShell = CreateObject("Shell.Application")


'開いているIEの数を数えてみる。

lngCount = 0
For Each objWindow In objShell.Windows

lngCount = lngCount + 1

Next



'IEオブジェクトがないときは、新しく作成する
If lngCount = 0 Then

objShell.Windows.Item.Navigate2 "http://www.google.co.jp/ "  

Else

objShell.Windows.Item(lngCount - 1).Navigate2 "https://member.accesstrade.net/at/p/login.do ", navOpenInNewTab                    


p = lngCount + 1               


Set objIE = objShell.Windows.Item(p - 1)

objIE.document.All.UserName.Value = ID
objIE.document.All.Password.Value = Password
objIE.document.Forms(0).submit

End If



こんな感じで動きましたー。やったー


<script type="text/javascript" src="http://www.infotop.jp/click.js"></script >
<a href="http://e-excel.biz/macro/ad/ " onclick="return clickCount(186891, 40310);">エクセルマクロ(VBA)の作り方講座(Excel2007版)</a>

Sub loginaccesstrade()


ID = "otameshi"
Password = "ekuseru"



Const navOpenInNewTab = &H800
Set objShell = CreateObject("Shell.Application")


'開いているIEの数を数えてみる。

lngCount = 0
For Each objWindow In objShell.Windows

lngCount = lngCount + 1

Next



'IEオブジェクトがないときは、新しく作成する
If lngCount = 0 Then

objShell.Windows.Item.Navigate2 "http://www.google.co.jp/ "  '← 一例でグーグルを開いてみました。
Else

’IEが開いていたら新しいタブで、指定したURLで開きます。 

'↑でも、IE開いてなくてもページ開いちゃいますけどね。。。 NAVIFGATE2 をもっと調べないと。



objShell.Windows.Item(lngCount - 1).Navigate2 "https://member.accesstrade.net/at/p/login.do ", navOpenInNewTab                    '新しいタグで指定しURLを開く


p = lngCount + 1               '今開いているURLのページを指定したいのでいったん、lngCount の値をpに代入 ( lngCount のままだとうまく動かないのですよ)


Set objIE = objShell.Windows.Item(p - 1)

objIE.document.All.UserName.Value = ID
objIE.document.All.Password.Value = Password
objIE.document.Forms(0).submit

End If



こんな感じできました。


あまり美しくないですね。



Navigate2では新しいページは開かないのかと思っていましたが、 なぜか開きます f(^^;




でも、とりあえずできたのでめでたし。 (←それでいいのか!?)


謎はIEのウィンドウのカウントが実際に開いているよりも 1 多いんですよね。


何を持って・・・ 1 多いのでしょう?


IEそのものをカウントしているのかな?








Set objIE2 = objShell.Windows(objShell.Windows.Count - 1)

↑だと  objIE2  に入るのは ひとつ前に開けたページの様だ・・・ なぞだ。


-1 を取っても 今のページにはならない。。 たすのかしらん。


ちゃんと考えた方がいいよね。

アクセストレードというECサイトにログインしたいマクロ。。したいんですけど、、、。





***********サンプルコード **************

Sub login_sample()



ID = Range("C8").Value
Password = Range("D8").Value



Const navOpenInNewTab = &H800

Set ObjShell = CreateObject("Shell.Application")


For Each ObjWindow In ObjShell.Windows
Debug.Print "タイプは:" & TypeName(ObjWindow.Document)
'HTMLDocumentだったら
If TypeName(ObjWindow.Document) = "HTMLDocument" Then
'オブジェクトを代入する
Set objIE = ObjWindow
nFLG = True '見つけたよ
Exit For '初めに見つけたオブジェクトを代入
End If
Next

'Set objIE = CreateObject("InternetExplorer.Application")
'objIE.Visible = True
'objIE.Quit
objIE.navigate2 "https://member.accesstrade.net/at/p/login.do ", navOpenInNewTab

Debug.Print objIE

Do While objIE.Busy
Loop
Do While objIE.Document.ReadyState <> "complete"
Loop

objIE.Document.All.UserName.Value = ID
objIE.Document.All.Password.Value = Password


End Sub


**********************************************

↑これだと無理で、 objIE.Document.All.UserName.Value = ID
のところでエラーが出てしまう。


なんていう、エラーかと言うと・・・



実行時エラー ’438’

オブジェクトは、このプロパティまたはメソッドをサポートしていません。



と出ます。


さて・・・・ 次回に続く



いきなりですけど、VBAでIEを新しいタブで開く操作。

忘れそうなのでメモメモ


注釈は間違えているかもしれません。

コードはこのままVBEの標準モジュールに貼りつけていただければ動くと思います。


ここでの肝は

navigate2 と navOpenInNewTab



*********サンプルコード********************


Sub IE_newtab()


Const navOpenInNewTab = &H800                   '定数を代入

Set ObjShell = CreateObject("Shell.Application")          'シェル アプリケーションと言うオブジェクトを作る


For Each ObjWindow In ObjShell.Windows

Debug.Print "タイプは:" & TypeName(ObjWindow.Document)

'HTMLDocumentだったら

If TypeName(ObjWindow.Document) = "HTMLDocument" Then

'オブジェクトを代入する
  Set ObjIE = ObjWindow

    nFLG = True

  Exit For

End If

Next

ObjIE.navigate2 "http://www.google.co.jp/ ", navOpenInNewTab


End sub


******************************************


これで、「新しいタブ」で開くようになりますが。。。。

エクセルVBAで、IEの制御をしたい!!と思って早幾月~♪


まず、URLを指定して開く



*********サンプルコード*****************

Sub IE()


Set ObjIE = CreateObject("InternetExplorer.Application")
ObjIE.Visible = True

ObjIE.Navigate "http://www.google.co.jp/ "


End Sub

*************************************


表示だけならこれでOK♪


たとえば、 検索窓に文字を入力して「検索」ボタンを押す 操作とかをしたいですね。