• 締切済み

VBA 配列の一括セル書き出しについて

はじめまして、いきなり仕事でVBAをやらざるを得なくなり、 ネット情報を参考にやっていますが、以下の部分で停滞中です。 どなたかご教示をお願いします。 HTMLのボディ部分を配列に取り込み、セルへ出力させるのが目的です。 ダウンロード部分でメモリへ取り込んだあと、セルひとつずつへ 逐次、書き出して行く方法はうまくいってます。 しかし、これだと時間がかかりすぎるので、一括出力を目論んで 書き出しを別ルーチンでということで、やってますが うまくいきません。下のルーチンの出力部分で 「アプリケーション定義またはオブジェクト定義のエラーです。」 というエラーがでます。 この方法以外に色々な方法で試してみましたが、同じエラーで困ってます。 ps) strHTMLは最大件数のメモリ領域を確保し、   ダウンロード分をstrHTML2に置き換えてます。 その際、変数領域のサイズとセル範囲を合わせてます。 '---------[HTMLダウンロード(メモリへ収納)]-------------------- . . . For i = 1 To msu If Worksheets("Sub").Range("c" & 29 + i) = "" Then Exit For objIE.Navigate Worksheets("Sub").Range("c" & 29 + i) '画面オープン Call wait_open(objIE) strHTML(i, j) = objIE.document.body.innerHTML 'innerHTMLを取出す Next i Next j '------[ダウンロードデータをセルへ書き出し]------------------- s = Maxrow t = j - 1 ReDim strHTML2(1 To s, 1 To t) As Variant For i = 1 To s For j = 1 To t strHTML2(i, j) = strHTML(i, j) Next j Next i Select Case t Case 1 Range("ba2000:ba" & s + 1999) = strHTML2 Case 2 Range("ba2000:BB" & s + 1999) = strHTML2 .  . . Case 18 Range("ba2000:BR" & s + 1999) = strHTML2 Case 19 Range("ba2000:BS" & s + 1999) = strHTML2 Case 20 Range("ba2000:BT" & s + 1999) = strHTML2 End Select

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim i As Integer, j As Integer Dim v As Variant ReDim v(1 To 10, 1 To 10) '配列に書き込み For i = 1 To 10 For j = 1 To 10 v(i, j) = i * j Next Next 'セルへ書き出し A1を基準として Range("A1").Resize(UBound(v, 1), UBound(v, 2)).Value = v End Sub こうゆう感じの事をしたいのでしょうか?

jp6fgk
質問者

お礼

ご教示ありがとうございます。 早速、UBound 関数をネットで調べ理解ました。 そして以下のようにやってみましたが、結果は同じでした。 Range("ba2000").Resize(UBound(strHTML2, 1), UBound(strHTML2, 2)).Value = strHTML2 やはり、同じエラーが出ます。 やりたい方向性はご教示の方法であっているとおもうんですが・・・。

関連するQ&A