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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
エクセルでシートの並び替えで...
-
マクロ 各シートの決められた位...
-
EXCELのエラー
-
エクセル シート保護をかける...
-
エクセルVBAでcmbBoxのプロパテ...
-
VBA シート名を先月の名前に...
-
エクセル2013でマクロのボタン...
-
エクセルで回数をカウントする...
-
VBA ワークシートオブジェクト...
-
エクセルで複数のSheetを一括フ...
-
エクセルを開いたとき常に同じ...
-
シートを保護した時でも並べ替...
-
【 Excel】シートの見出しに自...
-
VBAでユーザーに別ファイルのシ...
-
Excelのマクロの呼び出し元を知...
-
うまくマクロが実行しません
-
EXCELでマクロを使わずに図形の...
-
シートの保護を実行した時、マ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
マクロを複数シートに実行する...
-
コマンドボタンがデザインモー...
-
エクセルを開いたとき常に同じ...
-
【 Excel】シートの見出しに自...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
EXCELでワークシートを開いたら...
-
EXCELでマクロを使わずに図形の...
-
マクロを特定の複数シートで実...
-
エクセルの複数のワークシート...
-
EXCELのエラー
-
複数シートの保護・解除
-
VBA シート名を先月の名前に...
-
エクセル2013でマクロのボタン...
-
VBAで作るexcel検索窓
-
EXCELの起動時に常に同じ...
-
シートを保護した時でも並べ替...
-
Excelで,特定のシートを開いた...
-
Excelのマクロの呼び出し元を知...
-
メッセージボックスでシート名...
おすすめ情報