Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4535 / 13646 ツリー ←次へ | 前へ→

【56075】配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 3:39 質問[未読]
【56076】Re:配列変数にネットの表を取り込む方法 kobasan 08/6/1(日) 8:12 回答[未読]
【56077】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 8:37 お礼[未読]
【56078】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 9:02 質問[未読]
【56079】Re:配列変数にネットの表を取り込む方法 かみちゃん 08/6/1(日) 9:20 発言[未読]
【56083】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 10:14 お礼[未読]
【56089】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 14:53 質問[未読]
【56090】Re:配列変数にネットの表を取り込む方法 かみちゃん 08/6/1(日) 14:59 発言[未読]
【56091】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 15:10 質問[未読]
【56092】Re:配列変数にネットの表を取り込む方法 かみちゃん 08/6/1(日) 15:25 発言[未読]
【56093】Re:配列変数にネットの表を取り込む方法 まさ 08/6/1(日) 15:37 お礼[未読]

【56075】配列変数にネットの表を取り込む方法
質問  まさ  - 08/6/1(日) 3:39 -

引用なし
パスワード
    ネット上の表を下のコードで貼り付けていますが、これの出力先(Destination?)を変数にしたいのですが、うまく実行できません。
もしご存知の方がいればアドバイスお願いします。
Sub get()
With Sheets("Sheet1").QueryTables.Add(Connection:=urlweb,=Destination:=Cells(1, 1))
  .AdjustColumnWidth = False
  .WebSelectionType = xlSpecifiedTables
  .WebFormatting = xlWebFormattingNone
  .WebTables = 19
  .Refresh BackgroundQuery:=False
End With
End Sub

【56076】Re:配列変数にネットの表を取り込む方法
回答  kobasan  - 08/6/1(日) 8:12 -

引用なし
パスワード
   まさ さん おはようございます。

>With Sheets("Sheet1").QueryTables.Add(Connection:=urlweb,=Destination:=Cells(1, 1))



With Sheets("Sheet1").QueryTables.Add(Connection:=urlweb,Destination:=Sheets("Sheet1").Cells(1, 1))

ということで、変数を使うのなら

  Set MySheet = ActiveSheet
  Set MyCell = MySheet.Cells(1, 1)

  With MySheet.QueryTables.Add(Connection:=MyURL, Destination:=MyCell)
とすればいいかな。

【56077】Re:配列変数にネットの表を取り込む方法
お礼  まさ  - 08/6/1(日) 8:37 -

引用なし
パスワード
   朝早くからご回答申し訳ありません。
さっそく、実行できるか試してみます。
また、追加で質問させてもらうかもしれませんが、お時間があればご指導お願いします。

【56078】Re:配列変数にネットの表を取り込む方法
質問  まさ  - 08/6/1(日) 9:02 -

引用なし
パスワード
   さっそく実行してみました。質問させてもらった分はうまくいきそうです。
すいませんが、もう一つ質問があるのですが、
この変数(Mycell)に収めたデータの特定の位置のデータをエクセルに貼り付けする事なく参照する事は可能なのでしょうか?下記にイメージを書きます。

Mycell ⇒ a1 b1 c1
      a2 b2 c2

例えば、a1の値を参照して、違う変数に入れる事などはできるのでしょうか?
もし、方法をご存知ならご指導お願いします。

【56079】Re:配列変数にネットの表を取り込む方法
発言  かみちゃん  - 08/6/1(日) 9:20 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>この変数(Mycell)に収めたデータの特定の位置のデータをエクセルに貼り付けす
>る事なく参照する事は可能なのでしょうか?

質問のタイトルから想像して、もしかして、シート上に読み込ませるのではなく、
いきなり変数に入れたいということではないのでしょうか?

そうでないならば、

>Mycell ⇒ a1 b1 c1
>      a2 b2 c2
>
>例えば、a1の値を参照して、違う変数に入れる事などはできるのでしょうか?

以下のような感じでいかがでしょうか?

Sub test()
 Dim mySheet As Worksheet
 Dim myCell As Range
 
 Set mySheet = ActiveSheet
 Set myCell = mySheet.Cells(1, 1)
 
 MsgBox myCell.Cells(2, 3).Address & " の値は " & myCell.Cells(2, 3).Value
 
 With myCell.Cells(3, 4)
  MsgBox .Address & " の値は " & .Value
 End With
End Sub

【56083】Re:配列変数にネットの表を取り込む方法
お礼  まさ  - 08/6/1(日) 10:14 -

引用なし
パスワード
   ご回答どうもです。
ご指摘通り改良してみます。また、うまくいきましたらご報告させてもらいます。
これがうまくいけばかなり軽くなると思うので、楽しみですw

【56089】Re:配列変数にネットの表を取り込む方法
質問  まさ  - 08/6/1(日) 14:53 -

引用なし
パスワード
   すいません、ご指摘いただいた方法で実行してみたのですが、読み込んだ表がシートに落ちてしまいます。Set Mycell = MySheet.Cells(1, 1)がまずいのでしょうか?

Sub get()
 Set MySheet = ActiveSheet
 Set Mycell = MySheet.Cells(1, 1)
  With MySheet.QueryTables.Add(Connection:=urlweb, Destination:=Mycell)
  .AdjustColumnWidth = False
  .WebSelectionType = xlSpecifiedTables
  .WebFormatting = xlWebFormattingNone
  .WebTables = tableno
  .Refresh BackgroundQuery:=False
End With
End Sub

【56090】Re:配列変数にネットの表を取り込む方法
発言  かみちゃん  - 08/6/1(日) 14:59 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 読み込んだ表がシートに落ちてしまいます。

これは、どういう意味ですか?
私が、[56079]で申し上げていますとおり、
> 質問のタイトルから想像して、もしかして、シート上に読み込ませるのではなく、
> いきなり変数に入れたい

ということではないのでしょうか?

>  With MySheet.QueryTables.Add(Connection:=urlweb, Destination:=Mycell)

としている以上、一旦シートに読み込まれます。
読み込ませたくない場合は、WebQueryではない方法を使いますが、そのためには
HTML等を解析する知識が必要となります。
また、OSやExcelのバージョンによっても異なると思います。

詳細は、以下のURLを参考にしてみてください。
http://www.ken3.org/cgi-bin/group/vba_ie.asp

【56091】Re:配列変数にネットの表を取り込む方法
質問  まさ  - 08/6/1(日) 15:10 -

引用なし
パスワード
   何度も質問申しわけございません。
今のご説明から推察するに、今の手法では、シートに"貼り付ける"前に変数に納める事は不可能という事でしょうか?

【56092】Re:配列変数にネットの表を取り込む方法
発言  かみちゃん  - 08/6/1(日) 15:25 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> 今の手法では、シートに"貼り付ける"前に変数に納める事は不可能

QueryTables オブジェクトの Add メソッド
のヘルプによると、
引数Destinationには、
Range オブジェクトを返すオブジェクト式を指定します。
とあります。

つまり、一旦、セルに貼り付けてから、変数に格納する必要がある。
要するに、WebQueryを使う以上、不可能ということだと思います。

そのため、別の手法を提案させていただきました。
そこまでして、シートに読みこまさずに、変数に格納したいのかという疑問は
ありますが・・・
シートに読み込まれているのを見せたくないだけならば、画面更新の制御で
できそうな感じもします。

【56093】Re:配列変数にネットの表を取り込む方法
お礼  まさ  - 08/6/1(日) 15:37 -

引用なし
パスワード
   わかりやすいご説明ありがとうございます。
どうしても必要かと聞かれますと、すでに目的の結果が得られる形にはなってるのですが、貼り付けの回数が減ればより早くという欲が出てしまいまして、質問に至った次第です。
ご指摘いただいた用に、ここら辺が私の方法では限界のようなので、HTMLの勉強もしていこうと思います。何度も丁寧にご回答していただいてありがとうございました。

4535 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free