- ベストアンサー
EXCEL外部データの取り込み(VBA)方法と注意点
- EXCELから簡易データ取得を行う方法について説明します。VBAを使用して複数のページデータを取得し、それをシートに貼り付ける方法も紹介します。
- EXCELのVBAを使用して外部のページデータを取得する方法について詳しくご説明します。具体的には、URLが可変する場合の対応方法や、取得データの整形についても解説します。
- EXCELのVBAを使って外部のページデータを取得し、シートに貼り付ける方法について説明します。A列や上部の行を削除する場合の記述方法もご紹介します。
- みんなの回答 (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 に変更してください。
その他の回答 (2)
- ham_kamo
- ベストアンサー率55% (659/1197)
No.1です。すみません、ケアレスミスがありました。 Format(Num, "000") & ".htm" でなくて Format(Num, "000") & ".html" でした。
- ham_kamo
- ベストアンサー率55% (659/1197)
お書きになった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 ↑でいけるものなのでしょうか?
補足
やはり文字化けしてしまいますね(^^;
お礼
おおおおおお!!!! なんとかいけそうです。 収集しているものが001~100までだったり 1~150がなく237~とかいうページもあったりで シートを最初から作っていない感じでした。 またわからなければ質問致します! 丁寧なご回答ありがとうございました!!