How to speed up the program?

L

liu_jz

I wrote a program in VB6. I want to copy some rows in a table, and
paste many times (according to the record number). The program works
fine. But it is slow. How to speed up it?

Thanks advance.
Liu Jianzhong

Dim gwdApp As Word.Application
Dim gwdDoc As Word.Document
Dim gwdTable As Word.Table
Dim vntFieldValue() As Variant
Dim lngRangeBeginRow As Long
Dim lngRangeEndRow As Long
Dim lngStep As Long
Dim lngRecordCnt As Long
Dim i As Long
Dim j As Integer

.......
ReDim vntFieldValue(lngRecordCnt - 1, lngFieldCnt - 1)
.......
lngStep = lngRangeEndRow - lngRangeBeginRow + 1
With gwdApp.Selection
gwdDoc.Range(gwdTable.Rows(lngRangeBeginRow).Range.Start,
gwdTable.Rows(lngRangeEndRow).Range.End).Copy
lngTempPos = gwdTable.Cell(lngRangeBeginRow, 1).Range.Start
.SetRange lngTempPos, lngTempPos
For i = 0 To lngRecordCnt - 1
.Paste
Next i
End With
For i = 0 To lngRecordCnt - 1
For j = 0 To lngFieldCnt - 1
gwdTable.Cell(lngRow(j) + i * lngStep, lngCol(j)).Range.Text =
vntFieldValue(i, j)
Next j
Next i
 
J

Jonathan West

1. Don't use the selection. This is very slow. Instead, define one or more
object variables of type Range and use those instead. You can so almost
anything with a Range object variable that you can do with the Selection
object.

2. Don't use the clipboard. If you are wanting to move unformatted text
around, You can read the Text property of a range and place it into a string
variable. You can then use the InsertAfter method to insert text after any
Range, or you can set the Text property of a Range to place text there
replacing existing text. If you want to move formatted text around retaining
the formatting, look at using the FormattedText property.


--
Regards
Jonathan West - Word MVP
www.intelligentdocuments.co.uk
Please reply to the newsgroup
Keep your VBA code safe, sign the ClassicVB petition www.classicvb.org
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top