私はCSVが最速であると思いますが、Excel.Range.Value2
はあなたではなく、一度に各セル1を埋めるよりも、配列を送信することができます:
Dim xl As New Excel.Application 'always use a variable to reference Excel, otherwise it may stay in memory, hidden.'
Dim b As Excel.Workbook = xl.Workbooks.Add 'do not use b = New Excel.Workbook, as this can cause a memory leak'
Dim s As Excel.Worksheet
xl.Visible = True
Dim sLast As Excel.Worksheet = b.Worksheets(b.Worksheets.Count)
b.Worksheets.Add(, sLast)
s = b.Worksheets(1) '1-based'
Dim o(199999, 1) As Object
For i As Integer = 0 To 199999
o(i, 0) = i.ToString
o(i, 1) = (200000 - i).ToString
Next i
s.Name = "ExcelDemo"
Dim r As Excel.Range = s.Range("A1", "B200000")
r.Value2 = o
s.Activate()
Dim strFilename As String = My.Computer.FileSystem.SpecialDirectories.Desktop & "\Junk" 'N.B. extension automatically added'
b.SaveAs(strFilename)
strFilename = b.FullName 'get full filename'
xl.Quit()
MsgBox(strFilename & " saved")
出典
2017-11-14 05:03:49
SSS
いくつかの方法があります。これが引き起こされる方法、あなたは意見を求めています。 – Plutonix
私はCSVが最も速いと思いますが、IIRCの「Excel.Range.Value2」では、各セルを一度に1つずつ書き込むのではなく、配列を送信できます。 – SSS
いいえ、私は意見を求めているのではなく、実際の解決策を探しています。 @SSS、私は明日オフィスに着くときにそれを見ていきます。ありがとう。 – ryguy72