すいません、前回の投稿を途切らせてしまったため、続きを再度投稿させて頂きます。xls88 様
その後、手作業で進めてまいりましたが終わりが見えず、、、
職場の方から「mooter」で試してみればとのアドバイスをもらいました。
前回のプログラムを
myUrl = "?http://www.google.co.jp/"? → myUrl = "?http://www.mooter.co.jp/"?
に書き換えましたが、上手くいきませんでした。他にどこを修正すると動作するでしょうか?
何度も申し訳ありませんがよろしくお願いいたします。
A 回答 (14件中1~10件)
- 最新から表示
- 回答順に表示
No.14
- 回答日時:
回答番号:No.13 この回答への補足 で示されたコードは不完全です。
書き直してみました。
★1a、★1b、でコード進行を遅延させてみます。
例では2秒に設定しています。
実際のところ良く分かっていないのですが、上手く動くかもしれません。
★2a、で★2bで使っている変数の宣言をしています。
今回のコードでは、サブプロシージャwebReadyStateは必要ありません。
Dim objIE As Object
Dim c As Range
Dim mytime As Variant '★1a
Dim tmp As Object, tmp1 As Object '★2a
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
For Each c In Range("A1:A6")
objIE.Navigate c.Value
'表示と読み込みが完了するまで待機する
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
'★1b、更に指定時間の空ループで遅延させてみる
mytime = Now + TimeValue("00:00:02")
Do While Now < mytime
DoEvents
Loop
On Error Resume Next
With objIE.Document
'≪Title≫
c.Offset(, 1).Value = .Title
With .all.Tags("meta")
'≪keywords≫
'name属性
c.Offset(, 2).Value = .Item("keywords").Content
'★2b、http-equiv属性の場合
If .Item("keywords").Content = "" Then
Set tmp1 = objIE.Document.getElementsByTagName("meta")
For Each tmp In tmp1
If tmp.httpequiv = "keyword" Then
c.Offset(, 2).Value = tmp.Content
Exit For
End If
Next
End If
'≪description≫
c.Offset(, 3).Value = .Item("description").Content
End With
End With
On Error GoTo 0
Next
Set objIE = Nothing
Set tmp1 = Nothing
#余計なお節介ですが
VBEのヘルプ
http://miyahorinn.fc2web.com/vbabegin/s_02_03.html
デバッグについて
http://members.jcom.home.ne.jp/rex-uchida/vba110 …
この回答への補足
xls88さま
ご返信ありがとうございます(T T)
頂いたコードで確認してみます。
ヘルプもちょっと見てみますね。
少しお時間くださいませ。
No.13
- 回答日時:
>回答番号:No.12 この回答への補足
>no.9でのアドバイス頂いたものは試したのでが、上手くいきませんでした。
回答番号:No.12で提示したように、mytimeを入れてみたが駄目だった、ということですか。
回答番号:No.11 この回答への補足、で提示されたコードではその辺が窺えないので、回答番号:No.12で再掲しました。
上手くいかない、というだけでは何ともし難いです。
エラーはでるのか出ないのか?
エラーがでるなら、エラーコードと内容、エラー発生行はどうなっているのか?
無駄かもしれませんが、現在の状況が分かるように、具体的に伝えるようにしてください。
この回答への補足
お返事ありがとうございます。
そして、説明べたですみません、、、
エラーが出てしまうのは、A列にあるhttp://www.mol.co.jp/のところで
「実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません。」と表示されます。
デバックをすると→c.Offset(, 2).Value = .Item"keywords").Contentと表示されます。
今使っているコードは下のものが全てになります。No12でアドバイス頂いた物も入れているのでが、、、要領が悪くてすみません。
Sub test()
Dim objIE As Object
Dim c As Range
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
For Each c In Range("A1:A6")
objIE.Navigate c.Value
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
On Error Resume Next
With objIE.Document
'≪Title≫
c.Offset(, 1).Value = .Title
With .all.Tags("meta")
'≪keywords≫
'name属性
c.Offset(, 2).Value = .Item("keywords").Content
'http-equiv属性
If .Item("keywords").Content = "" Then
Set tmp1 = objIE.Document.getElementsByTagName("meta")
For Each tmp In tmp1
If tmp.httpequiv = "keyword" Then
c.Offset(, 2).Value = tmp.Content
Exit For
End If
Next
End If
'≪description≫
c.Offset(, 3).Value = .Item("description").Content
End With
End With
On Error GoTo 0
Next
Set objIE = Nothing
End Sub
Sub webReadyState(myWindow)
Dim mytime As Variant
With myWindow
Do While .Busy = True
DoEvents
Loop
Do While .ReadyState <> 4
DoEvents
Loop
End With
mytime = Now + TimeValue("00:00:02")
Do While Now < mytime
DoEvents
Loop
End Sub
No.12
- 回答日時:
>回答番号:No.11 この回答への補足
何を設定されたのか何も見えません。
回答番号:No.9で提案した内容は試してみましたか?
試したけども、駄目だったのですか?
Dim mytime As Variant
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
mytime = Now + TimeValue("00:00:02")
Do While Now < mytime
DoEvents
Loop
この回答への補足
おはようございます。
すみません(:_;)
no.9でのアドバイス頂いたものは試したのでが、上手くいきませんでした。
私自身ちゃんとわかっていなくてすみません...
No.11
- 回答日時:
>私の設定が良くないのでしょうか、、、
どういう設定をされているのですか?
見せて頂けないと何とも解りません。
コードを全文提示できないでしょうか。
この回答への補足
すみません(:_;)
コード忘れていました。
いかがでしょうか?
Dim objIE As Object
Dim c As Range
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
For Each c In Range("A1:A6")
objIE.Navigate c.Value
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
On Error Resume Next
With objIE.Document
'≪Title≫
c.Offset(, 1).Value = .Title
With .all.Tags("meta")
'≪keywords≫
'name属性
c.Offset(, 2).Value = .Item("keywords").Content
'http-equiv属性
If .Item("keywords").Content = "" Then
Set tmp1 = objIE.Document.getElementsByTagName("meta")
For Each tmp In tmp1
If tmp.httpequiv = "keyword" Then
c.Offset(, 2).Value = tmp.Content
Exit For
End If
Next
End If
'≪description≫
c.Offset(, 3).Value = .Item("description").Content
End With
End With
On Error GoTo 0
Next
Set objIE = Nothing
No.10
- 回答日時:
http-equiv属性の"keyword"を取ってみました。
On Error Resume Next
With objIE.Document
'≪Title≫
c.Offset(, 1).Value = .Title
With .all.Tags("meta")
'≪keywords≫
'name属性
c.Offset(, 2).Value = .Item("keywords").Content
'http-equiv属性
If .Item("keywords").Content = "" Then
Set tmp1 = objIE.Document.getElementsByTagName("meta")
For Each tmp In tmp1
If tmp.httpequiv = "keyword" Then
c.Offset(, 2).Value = tmp.Content
Exit For
End If
Next
End If
'≪description≫
c.Offset(, 3).Value = .Item("description").Content
End With
End With
On Error GoTo 0
この回答への補足
たくさんアドバイスありがとうございます(^-^)
でも、すいません。同じところで同じエラーが出て止まってしまいます。私の設定が良くないのでしょうか、、、
何度もすみません(:_;)
No.8
- 回答日時:
回答番号:No.7のコードは、On Error ステートメントを前後に置いてあります。
エラーが発生しても、エラー行をスルーして次の行が実行されるはずです。
理解できませんが、異なる要因のエラーが発生しているのでは?
エラー内容、発生行はどうなっていますか?
この回答への補足
そーなんですね!
勘違いしました(^^;)
エラーは、例えば http://www.mol.co.jp/ の場合、
titleを取得したところで処理が止まってしまい、
「実行時エラー'91' オブジェクト変数またはWithブロック変数が設定されていません。」と表示されます。
デバックをすると→
c.Offset(, 2).Value = .Item("keywords").Content
となります。
どうでしょうか?
No.7
- 回答日時:
Dim objIE As Object
Dim c As Range
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
For Each c In Range("A1:A3")
objIE.Navigate c.Value
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
On Error Resume Next
With objIE.Document
c.Offset(, 1).Value = .Title
With .all.Tags("meta")
c.Offset(, 2).Value = .Item("keywords").Content
c.Offset(, 3).Value = .Item("description").Content
End With
End With
On Error GoTo 0
Next
Set objIE = Nothing
残念ながら http://www.mol.co.jp/ の"keywords"が取れません。
HTMLソースにName属性が使われていないからだと思います。
<meta http-equiv="keyword" content="**********">
この回答への補足
おはようございます。
早速ありがとうございます(^^)
Name属性がないとうまく取れないんですね。
これは、descriptionやTitleも同じでしょうか?
何度か動かしてみたのですが、この部分で止まってしまいます。
うまく取れない場合は、スルーして次の行に進むことは可能でしょうか?
よろしくお願いいたしますm(_ _)m
No.6
- 回答日時:
>1.descriptionとkeywordsとtitleだけを上手く選べません、、、
セルA1に
http://www.vaio.sony.co.jp/
とURLが記述されているとして、下記で試してください。
Dim objIE As Object
Dim objTD As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
'セルデータのURLを起動
objIE.Navigate Range("A1").Value
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
Set objTD = objIE.Document.all.Tags("meta")
'≪タイトル≫
MsgBox objIE.Document.Title
'≪keywords≫
MsgBox objTD.Item("keywords").Content
'≪description≫
MsgBox objTD.Item("description").Content
Set objIE = Nothing
Set objTD = Nothing
上手く動いたなら、抽出データのセル書き込みを工夫してください。
>2.IEを開いたままで、webアドレスだけ入れ替えたいのですが、、、
>3.webアドレスをエクセルのA列から自動的にとりたいのですが、、
URL起動部分を、ループ処理すればよいかもしれません。
この回答への補足
xls88様
ご回答ありがとうございます(^^)
MsgBoxのところを下記のようにしましたら、必要な項目だけ入りました!ありがとうございます!
'Range("b1") = objIE.Document.Title
'Range("c1") = objTD.Item("keywords").Content
'Range("d1") = objTD.Item("description").Content
>>3.webアドレスをエクセルのA列から自動的にとりたいのですが、、
>URL起動部分を、ループ処理すればよいかもしれません。
すみません、ここが分かりません(:_;)
URLの起動部分と上記の取得項目の書込場所をループしていくのかと思いますが、、、、
ないアタマを振り絞って考えたのですが、思いつきませんでした。
教えていただけませんでしょうかm(_ _)m
※A列は以下のような感じです。
http://www.vaio.sony.co.jp/
http://denko.panasonic.biz/Ebox/powertool/
http://www.mol.co.jp/
どうかよろしくお願いいたします。
No.5
- 回答日時:
進んでいますか?
まだ閉じられないのは躓いているのですか?
解らなければ遠慮なく捕捉で質問してください。
VBAからのWebブラウザ起動
http://lcl.web5.jp/prog/excel_vba/ietest.html
この回答への補足
xls88様
ご連絡遅くなってすみません。
風邪と忙しさと頭の悪さで全然進まず、、、(T T)
気にかけて頂いて、ありがとうございます!
紹介頂いたサイトを参考にしながら(マネしながら)取りあえず作ってみたのですが、、、思うようにいきません。
1.descriptionとkeywordsとtitleだけを上手く選べません、、、
2.IEを開いたままで、webアドレスだけ入れ替えたいのですが、、、
3.webアドレスをエクセルのA列から自動的にとりたいのですが、、
どうぞご指南お願いいたしますm(_ _)m
Sub test()
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "http://www.vaio.sony.co.jp/"
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.ReadyState <> 4
DoEvents
Loop
Dim objTD As Object
Set objTD = objIE.Document.all.Tags("meta")
Dim n As Integer
For n = 0 To objTD.Length - 1
Cells("1", n + 1) = n
Cells("2", n + 1) = "'" & Left(objTD(n).OuterHTML, 80)
Next n
Set objTD = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでWEBサーバー上に保存されたPDFファイルのリンク有効チェックについて 1 2022/11/11 16:04
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- YouTube ユーチューブへの動画投稿にサムネイルを付ける方法は? 1 2022/07/21 23:45
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- 中古車 カーエアコン保証について 先日投稿しましたが回りくどく書いたので簡潔に再投稿します。 保証付きの中古 7 2022/10/11 06:57
- 転職 至急で宜しくお願い致します。 7月31日に職業訓練校パソコン基礎科の面接を控えているものです。 この 1 2023/07/29 19:46
- 転職 至急で宜しくお願い致します。 7月31日に職業訓練校パソコン基礎科の面接を控えているものです。 この 1 2023/07/29 20:02
- Windows 10 数年前からWindows10 の Update ができないです。なぜですか? 7 2022/11/09 06:03
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
VBで構造体を使うさ際の64k...
-
マクロについて教えてください...
-
[Delphi] データセットは閉じて...
-
VBAがブレークモードになっ...
-
ExcelVBA Range クラスの Page...
-
VB6+SQL サーバー 2000 で 実行...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAのコードがエラーになっ...
-
VBAでのエラー
-
VBSで変数の宣言はできないので...
-
Excelで下記のようにマクロを作...
-
Invalid procedure call or arg...
-
日本語環境下で作成したマクロ...
-
Application.ActiveInspectorで...
-
excel vbaでレート取得について...
-
職場から目的地までの距離集計
-
Excel コードでの簡単な2種類...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実行時エラー 438になった時の...
-
エクセルエラー13型が一致しま...
-
【Excel VBA】マクロをボタンに...
-
なぜこんな初歩的なVBAのIf文で...
-
VBAでのエラー
-
マクロについて教えてください...
-
ExcelVBA Range クラスの Page...
-
実行時エラー3001「引数が間違...
-
VBS実行時エラー オブジェクト...
-
VBAがブレークモードになっ...
-
OLEDB.NETで接続できない
-
プロシージャ名の取得
-
EXCEL VBAマクロ中断でデバッグ...
-
VBSで変数の宣言はできないので...
-
ADODB.Streamを使用してUTF-8を...
-
実行時エラー -'-2147417848
-
AccessVBAでExcelを起動し、罫...
-
VB6+SQL サーバー 2000 で 実行...
-
Outlook.ApplicationをCreateOb...
-
Application.ActiveInspectorで...
おすすめ情報