|
▼ume さん:
こんにちは。
>Excelに出力するときに下のようなプログラムを
>使っているのですが、
>
> Set ObjExcel = New Excel.Application
> Set WkBook = ObjExcel.Workbooks.Open(strFileName)
> Set WkSheet = WkBook.Worksheets(1)
>
> ObjExcel.ScreenUpdating = False
>
> WkSheet.Cells(intRow1, intCol1) = strTemp1
> WkSheet.Cells(intRow2, intCol2) = strTemp2
> ・
> ・
> ・
> ・
> ObjExcel.ScreenUpdating = True
>
> この出力の方法だとかなりの時間がかかってしまいます。
> 出力処理を高速化したいのどのようにしたらよいでしょうか。
> 出力したいデータは1レコードの列数が50で20レコード程度です。
> Excelには1レコードを3行(列数が15程度)で表示しています。
> よい出力方法がありましたら教えてください。よろしくお願いします。
値を配列変数に設定してからセルに代入すると速そうですよ。
'============================================================
Sub main()
Dim sample() As Variant
sample() = mk_sample()
Range(Cells(1, 1), Cells(20, 50)).Value = sample()
End Sub
'======================================================================
Function mk_sample() As Variant
'↓のコードで配列に値をサンプルデータとして設定していますが、
' この変数同士の移行のループは結構速いです
Dim myarray(1 To 20, 1 To 50) As Variant
For idx = 1 To 20
For jdx = 1 To 50
myarray(idx, jdx) = 2 * idx + jdx
Next
Next
mk_sample = myarray()
End Function
一例です。
|
|