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

vbでweb siteのリンクのリンク名に変数を指定したいのですがうまくきません。どなたか教えていただけないでしょうか? コードは以下のようになっています。
Dim objIE
Dim objShell
Dim objLINK
Dim j As Integer
objShell = CreateObject("InternetExplorer.Application")

objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True 'IEウィンドウを表示
objIE.Navigate2("http://www.data.jma.go.jp/obd/stats/etrn/index.p …

Do Until objIE.Busy = False
Loop

For j = 1 To 2

For Each objLINK In objIE.Document.Links
If objLINK.InnerText = "2010年 & j & 月の日ごとの値を表示" Then
objLINK.Click()

Next j

A 回答 (5件)

No4の説明が一部抜けていました。


質問では、

objIE = CreateObject("InternetExplorer.Application")

となっていますが、

Set objIE = CreateObject("InternetExplorer.Application")

のようにする必要があります。
    • good
    • 0

No2です。

vbということですが、何のvbなのか
わからないので、Excel、Access、vb6その他
で一応動くであろうということで以下のように
コードを設定して動かしてみました。

Private Sub Command1_Click()
Dim objIE As Object
'Dim objShell
Dim objLINK
Dim j As Integer
'objShell = CreateObject("InternetExplorer.Application")

Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True 'IEウィンドウを表示
objIE.Navigate2 ("http://www.data.jma.go.jp/obd/stats/etrn/index.p …

Do Until objIE.Busy = False
Loop

For j = 1 To 2

For Each objLINK In objIE.Document.Links
If objLINK.InnerText = "2010年" & j & "月の日ごとの値を表示" Then
objLINK.Click
End If
Next objLINK

Next j
End Sub




Dim objShell
と、
objShell = CreateObject("InternetExplorer.Application")
は必要ないのでコメントアウトしています。
    • good
    • 0

#>[技術者向] コンピューター ▼ > プログラミング ▼ > Visual Basic


#「vbのリンク移動」となっていますが、Excel の VBA ですよね!

 コード の中に書かれている URL の ページ を開いて
objLINK.InnerText = "2010年 & j & 月の日ごとの値を表示"
となる「objIE.Document.Links」は「2010年1月の日ごとの値を表示」と記されているトコロ1ヶ所のみです。

 こういう場合は、いちいち
For Each objLINK In objIE.Document.Links ~~ Next
で廻さなくても、最初から
objIE.Navigate2 ("~~")
の引数に「2010年1月の日ごとの値を表示」の リンク先、つまり
~~.data.jma.go.jp/obd/stats/etrn/view/daily_s1.php?prec_no=46&prec_ch=%90_%93%DE%90%EC%8C%A7&block_no=47670&block_ch=%89%A1%95l&year=2010&month=1&day=&elm=daily&view=
を指定すればよいかと存じます。

 つまり、
For j = 1 To 12 ~~ Next j
と書いていらっしゃるであろう部分につきましては、お好きな形で「○○年△△月」という数字を決めて、その「○○」と「△△」を「&year=2010&month=1」の部分に当てはめることになります。

 例えば、「○○年」に当たる変数を「i」、「△△月」に当たる変数を「j」とすると、

objIE.Navigate2 ("http://www.data.jma.go.jp/obd/stats/etrn/view/da … & i & "&month=" & j & "&day=&elm=daily&view=")

ということになります。


 ちなみに、前のご質問(http://oshiete.goo.ne.jp/qa/6782243.html)で
>サイトはアメダスの横浜の2010年の1月の日ごとのデータです
>たとえば気温のデータだけ取り出したいのですが可能でしょうか?
とお書きですが、「Excel の VBA」でのお話しでしたら、[データ(D)] - [外部データの取り込み(D)] - [新しい Web クエリ(W)...] で、上記ページ を開いて、当該の テーブル を取り込み、「気温のデータだけ」他の シート に コピペ する、というようなことを、[新しいマクロの記録] で記録してみられてはいかがでしょうか?
    • good
    • 0

For j = 1 To 2 と Next j の間に


いろいろなものが抜けているようですが。

試していませんが、コードの流れから、

For j = 1 To 2

For Each objLINK In objIE.Document.Links
If objLINK.InnerText = "2010年" & j & "月の日ごとの値を表示" Then
objLINK.Click()
End If
Next objLINK

Next j


では?
    • good
    • 0

If objLINK.InnerText = "2010年 & j & 月の日ごとの値を表示" Then



上記コードは質問用ですか?
実際のコードが上記なら無理でしょう・・・
    • good
    • 0

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