OS:WIN XP
EXCEL2000使用
EXCELから簡易データ取得を行いたいとおもっています。
マクロ化しVBAをいじって複数のページデータを取得したいと考えています。
取得したいページのURLが
http://hogehoge.com/0000XXX.html
XXX部分が数字で001~100まで可変すると想定。
001~100までのデザインは同じ。
1~100までをそれぞれSHEET1~SHEET100までに貼り付けたいとおもっています。
その際に邪魔なA列と1~5行目を削除とする場合
どのような記述に変更すればよいのでしょうか。
ページの取得までは出来るのですが
VBAがあまりよくわからないので質問させていただきました。
宜しくお願い致します。
下記001.htmlだけを取得したものになります。
With ActiveSheet.QueryTables.Add(Connection:="URL;http://hogehoge.com/0000001.html", _
Destination:=Range("A1"))
.Name = "ExternalData_1"
~800文字に収まらないため中略~
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Rows("1:5").Select
Selection.Delete Shift:=xlUp
Range("A1").Select
End Sub
No.3ベストアンサー
- 回答日時:
> Sheets("SHEET" & Num).Activate
> のところでデバックが発生してしまいまして・・
SHEET1~SHEET100というシートはあらかじめ作っているわけではないのでしょうか。
それなら、以下のマクロを貼り付けて、1回実行してください。
URL1~URL100というシートが自動的に作成されます。(SHEET1とすると既存のシート名とかぶったときにエラーになったのでシート名を変えました)
Sub AddSheets()
Dim i As Integer
Worksheets.Add Count:=100
For i = 1 To 100
Sheets(i).Name = URL" & i
Next i
End Sub
なお、シート名を変えたので、先の回答の
Sheets("SHEET" & Num).Activate
という箇所を
Sheets("URL" & Num).Activate
に変更してください。
おおおおおお!!!!
なんとかいけそうです。
収集しているものが001~100までだったり
1~150がなく237~とかいうページもあったりで
シートを最初から作っていない感じでした。
またわからなければ質問致します!
丁寧なご回答ありがとうございました!!
No.2
- 回答日時:
No.1です。
すみません、ケアレスミスがありました。Format(Num, "000") & ".htm"
でなくて
Format(Num, "000") & ".html"
でした。
No.1
- 回答日時:
お書きになったVBAを標準モジュールに記述し、引数でシート番号を指定してForループで001~100までを処理したらいいのではないでしょうか。
質問文のプロシージャ名を仮にGetURLとすると、
Sub GetURL(Num As Integer)
と定義し、
"URL;http://hogehoge.com/0000001.htm"
の部分(なんか文字化けしてますね)を、
"URL;http://hogehoge.com/0000" & Format(Num, "000") & ".htm"
と修正すると、以下のマクロで1~100まで処理できると思います。
Sub GetAllURL()
Dim Num As Integer
For Num = 1 To 100
Sheets("SHEET" & Num).Activate
GetURL (Num)
Next Num
End Sub
質問の意味を誤解していたらすみません。
ご解答ありがとうございます。
お礼が遅くなってしまい申し訳ございません。
しばらくやってみたのですが;;;
Sheets("SHEET" & Num).Activate
のところでデバックが発生してしまいまして・・
Sub GetURL(Num As Integer)
With ActiveSheet.QueryTables.Add(Connection:=URL;http://hogehoge.com/0000" & Format(Num, "000") & ".htm", _
Destination:=Range("A1"))
中略
Range("A1").Select
End Sub
Sub GetAllURL()
Dim Num As Integer
For Num = 1 To 100
Sheets("SHEET" & Num).Activate
GetURL (Num)
Next Num
End Sub
↑でいけるものなのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELの起動時に常に同じ...
-
コマンドボタンがデザインモー...
-
VBAであるマクロを全てのシート...
-
エクセルを閉じる際に自動保存...
-
エクセルVBAでcmbBoxのプロパテ...
-
vba エクセルシートの追加、名...
-
Excel VBA ピボットテーブル201...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートコピーするマ...
-
VBAの「一つのBook内のセルから...
-
メッセージボックスでシート名...
-
エクセル CALL ステートメント
-
エクセルのマクロについて
-
エクセル2007シート名一覧を出...
-
エクセルシートのセルに現在時...
-
EXCELのエラー
-
同一ブックのSHEET1内で処理す...
-
EXCELでマクロを使わずに図形の...
-
エクセル2010 マクロを実行す...
-
マクロを特定の複数シートで実...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
Excelのマクロの呼び出し元を知...
-
EXCELでワークシートを開いたら...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセル2013でマクロのボタン...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
EXCELの起動時に常に同じ...
-
EXCELのエラー
-
メッセージボックスでシート名...
-
エクセルVBAでcmbBoxのプロパテ...
-
マクロ 各シートの決められた位...
-
エクセルで回数をカウントする...
おすすめ情報