- 締切済み
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
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- n-jun
- ベストアンサー率33% (959/2873)
お礼
ご教示ありがとうございます。 早速、UBound 関数をネットで調べ理解ました。 そして以下のようにやってみましたが、結果は同じでした。 Range("ba2000").Resize(UBound(strHTML2, 1), UBound(strHTML2, 2)).Value = strHTML2 やはり、同じエラーが出ます。 やりたい方向性はご教示の方法であっているとおもうんですが・・・。