[excel・webクエリ・マクロ初心者]HP上の4つの表をwebクエリで取り込むマクロを(はてなで教えていただき)それぞれ作ってみました。感動的でした。しかし面倒なので4つを一度に取り込めるマクロを作りたいと思っています。これらの4つの表は日によって行数が変わります。また、それらの表と表の間は3行あける必要があります。この場合、VBA上でどのような記述を加えればよいのかわかりやすく教えてください。よい回答にはよいポイントをつけさせていただきます。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/03/29 12:53:56
  • 終了:2007/04/05 12:55:02

回答(3件)

id:nabetomo No.1

nabetomo回答回数125ベストアンサー獲得回数62007/03/29 14:06:26

ポイント27pt

Selection.End(xlDown)

は現在選択している位置からの最終行を表します。

この最終行に4を足せば表の末尾から3行間隔があきますので

表を貼り付けた後に下記のコードを追記すれば、次の表との間が3行開きます。

Cells(Selection.End(xlDown) + 4, ActiveCell.Column).Select

表の貼り付け->3行開ける・・・これを繰り返せば

思惑の動作が可能だと思います。

http://q.hatena.ne.jp

id:ayaka2002

ありがとうございました。

表1を取り込むコードと表2を取り込むコードの間に(End Withの次)教えていただいたコードを入れてみたのですがどうもうまくいきませんでした。何かやり方が間違っているのでしょうか。

2007/03/30 03:35:57
id:arhbwastrh No.2

arhbwastrh回答回数447ベストアンサー獲得回数232007/03/29 17:49:18

ポイント27pt

一番簡単なコードで書いてみました。

http://www.yahoo.co.jp


Sub test()
    Dim i As Long 'sub○○のすぐ下に書く

'以下はまとめて書く
i = 1
Do While i <> 4'iが4じゃなければ以下の作業を繰り返しなさい
    ActiveCell.Offset(1, 0).Activate'アクティブセルのひとつ下のセルをアクティブにしなさい
    If ActiveCell.Value = "" Then'もしそこが空白なら以下の処理をしなさい
        i = i + 1
            If i = 4 Then'さらに、もしiが4なら以下の処理をしなさい
ActiveCell.Offset(1, 0).Activate
                           '貼り付けをするコードを書く
        End If
    Else'iが4じゃなければ、iを1にしなさい
        i = 1
    End If
Loop
End Sub
>||
id:ayaka2002

ありがとうございました。頑張ってやってみます!

2007/03/30 17:58:52
id:Mook No.3

Mook回答回数1312ベストアンサー獲得回数3912007/03/30 00:09:58

ポイント26pt

保存位置はいつでも選択した位置で指定したいのでしょうか。


もしA列を基準に、いつでも最下行に3列あけてコピーすると考えることが出来るなら、下記のようにもできます。

Sub copyNext()
    Dim nextRow As Long
    With Worksheets(1)
        nextRow = .Range("A" & .Rows().Count).End(xlUp).Row + 4
        Worksheets(2).Range("A1:D10").Copy Destination:=.Range("A" & nextRow)
    End With
End Sub

この例は二枚目のシートの"A1:D10" を 1枚目のシートの最下行に3列あけてコピーする例です。


蛇足ですが、

With ****

   .###

End With

のように記述した場合、"." で始まる部分は

****.###

という意味になるので、最初の例で


.Range(・・・)

というのは

Worksheets(1).Range(・・・)

というように明示的に1枚目のシートを指したことになります。なので、最初の書き方は、複数のシートにまたがった処理を簡単にすることが出来ます。


Select を使うと、こういったことが出来ないので、一度試してみてはいかがでしょうか。


VBA 高速化テクニック Select するな

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません