人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルマクロでIE立ち上げる方法について質問です。(解決で150P以上)

次のような事は可能でしょうか?
可能でしたらコード教えて下さい。

?下の【Sub test55】を改造してください
下のtest55で作ったIEに名前を付けたい。

?【Sub test56】を作ってください
55で立ち上げたIEにyahoo.CO.JPを表示させるだけのマクロ
(上で名前付けた名前を使うイメージ)

?【Sub test57】を作ってください
55で立ち上げたIEを閉じるだけのマクロ
(同上)

※現状は、毎回IE立ち上げ→開放作業を繰り返してやってるので、名前付けてそれを使い回しできたらいいなぁと思い質問してみました。そもそも名前付けたりはできないのかもしれませんが…
とりあえずご回答お待ちしております!


Sub test55()
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "about:blank"
End Sub

●質問者: あややん
●カテゴリ:コンピュータ 学習・教育
✍キーワード:about:blank application AS co.jp IE
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● oshietechonmage
●100ポイント

?と?ですが、

【Sub test56】既存のIEのページ変更

Sub test56()
 Dim oSH,oIE,oMyIE
 Set oSH = CreateObject("Shell.Application")
 Set oMyIE = Nothing

 For Each oIE In oSH.Windows
 If InStr(oIE.FullName,"iexplore.exe") > 0 Then
 Set oMyIE = oIE
 Exit For
 End If
 Next

 
 If oMyIE Is Nothing Then Exit Sub
 oMyIE.Navigate "http://www.yahoo.co.jp/"
 Set oMyIE = Nothing
End Sub

【Sub test57】既存のIEを終了

Sub test56()
 Dim oSH,oIE,oMyIE
 Set oSH = CreateObject("Shell.Application")
 Set oMyIE = Nothing

 For Each oIE In oSH.Windows
 If InStr(oIE.FullName,"iexplore.exe") > 0 Then
 Set oMyIE = oIE
 Exit For
 End If
 Next

 If oMyIE Is Nothing Then Exit Sub
 oMyIE.Quit
 Set oMyIE = Nothing
End Sub

※ie6で確認しましたが他のバージョンでは、"iexplore.exe"が異なるかもしれません。

◎質問者からの返答

動きました(IE6)。

この場合、『どのIEの表示を変えるか』とか『どのIEを閉じるか』といった指定はできないみたいですね。

可能なら指定までできるといいんですが、やはり名前付けたりとかは無理なんでしょうか…?

しかしほぼ希望の動きはしておりますので。応用して使わせて頂きますね。

ありがとうございました!(+100P)


2 ● sugar_yas
●120ポイント ベストアンサー

'参照設定> Microsoft Internet Controls

Private objIE As InternetExplorer

Sub test55()

'Dim objIE As Object

Set objIE = CreateObject("InternetExplorer.application")


objIE.Visible = True

objIE.Navigate "about:blank"


End Sub

Sub test56(URL_Name As String)

If (Not objIE Is Nothing) Then

Call objIE.Navigate(URL_Name)

End If

End Sub

Sub test57()

If (Not objIE Is Nothing) Then

Call objIE.Quit

Set objIE = Nothing

End If

End Sub


Sub wait()

Dim waitTime As String

'数秒ループ

waitTime = Right(CInt(Format(Time, "SS")) + 5, 1)

Do While (waitTime <> Right(Format(Time, "SS"), 1))

Loop

End Sub

Sub test()

Call test55

Call wait

Call test56("http://yahoo.co.jp")

Call wait

Call test56("http://goo.ne.jp")

Call wait

Call test57

End Sub

◎質問者からの返答

おーよく解りませんが動きました!

たぶんこのカタチが求めてた答えなんじゃないかな思うんですが、知識不足ででこれが大正解なのかどうか自体解りかねるというのが現状なんですが…w

じっくり勉強してみたいと思います。ありがとうございました。(+100P)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ