プロが教える店舗&オフィスのセキュリティ対策術

https://bgp.he.net/AS9228 のサイトにIEでアクセスして、titleタグを取得してその一部をMsgBoxで画面に表示するVBスクリプトを下記のとおり作成しました。

これに下記の機能を追加したいのですが、コードはどのようになるでしょうか?

<追加機能>

Excel sheet c:\C_list.xlsxのA列に下記の整数値(顧客コード)が並んでいる。

9228
246
198
....

この整数値に下記の文字列を連結してURLを作成する。

https://bgp.he.net/AS

9228であれば

https://bgp.he.net/AS9228 

このURLを コード中の '当該ページをIEで開く のURLと置換して繰り返しtitleタグを取得し、

コード中のresultを繰り返し取得する。

取得したresultの内容をExcel sheet c:\C_list.xlsxのC列に上から順番に書いていく。



ーーー<コードここから>ーーー
Option Explicit

Dim objIE
 Set objIE = CreateObject("InternetExplorer.Application")
'IEを開くかどうか。開くを指定
objIE.Visible = True

'当該ページをIEで開く
objIE.navigate "https://bgp.he.net/AS9228"


'ページが読み込まれるまで待つ
Do While objIE.Busy = True Or objIE.readyState <> 4
WScript.Sleep 100
Loop


'タイトルを表示
msgbox objIE.document.Title


Dim s
Dim s1
Dim p
Dim result

s = objIE.Document.title
s1 = Split(s, "-")(0)
p = InStr(s1, " ")
result = Mid(s1, p + 1)

msgbox result

ーーー<コードここまで>ーーー

A 回答 (1件)

こんにちは



VBSはほとんど知らないのと、エクセルを扱うのならVBAが楽そうなので、以下のサンプルはVBAで記述しています。
(VBSでないとまずい場合は、変換をお願いいたします)

※ エクセルVBAで、ActiveSheetで読み込み、書き出しを行うものと仮定しています。
(Constの最後のクォーテーションが実態参照に変換されてしまうようです。
 その場合には、元に戻してください)

Sub Sample()
Dim objIE As Object
Dim rw As Long, s As String
Const uri = "https://bgp.he.net/AS" 

Set objIE = CreateObject("InternetExplorer.Application")
For rw = 1 To Cells(Rows.Count, 1).End(xlUp).Row
 s = Cells(rw, 1).Value
 If s <> "" Then
  objIE.navigate (uri & s)

  Do While objIE.Busy = True Or objIE.readyState <> 4
   DoEvents
  Loop
  s = Split(objIE.document.Title, "-")(0)
  Cells(rw, 3).Value = Mid(s, InStr(s, " ") + 1)
 End If
Next rw
objIE.Quit

End Sub

※ 最低限なので、エラー処理やタイムアウト等は考慮していません。
    • good
    • 0
この回答へのお礼

ありがとうございます。VBSで動かしてみます。

お礼日時:2019/04/16 16:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!