vb将读到的字符写入excel很慢
vb将读到的字符写入excel很慢
'文本 1.dat
'============================
. . . . . . . . . M M M M M 1 1 1 M M M M . . . . . . . . .
. . . . . . . . M M 1 1 1 1 1 1 1 1 1 1 1 M M . . . . . . .
. . . . . . . M M 1 1 1 1 1 1 1 1 1 1 1 9 9 M M . . . . . .
. . . . . M M M 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 M . . . . .
. . . . M 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 1 M . . . .
. . . M M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 M . . .
. . . M 1 1 1 1 1 1 1 1 1 1 1 1 9 1 9 12 1 1 1 1 1 1 1 M . .
. . M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 M M .
. . M 1 1 1 1 1 1 1 1 1 1 1 10 1 1 1 1 1 1 1 9 1 1 9 1 1 M .
. M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 4 1 1 1 1 1 1 M M
. M 1 1 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 M
M M 1 1 1 1 1 1 1 1 1 10 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 9 M
M M 10 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 M
M 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 M
M 9 1 1 9 1 1 1 1 1 1 1 1 9 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 M
M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 9 1 M
M M 1 1 1 1 9 1 1 1 1 1 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 M
M M 1 10 1 1 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 M
M M 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 9 1 1 1 1 9 1 1 1 1 1 M M
. M M 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 1 1 1 1 1 1 M .
. . M 1 1 1 1 1 1 1 9 9 1 1 1 1 1 1 1 1 9 1 9 1 9 1 1 M M .
. . . M 1 12 1 1 1 1 1 1 1 9 10 1 1 10 1 9 9 10 1 1 9 1 1 M . .
. . . M 1 1 9 1 1 1 9 1 1 9 1 1 10 9 10 1 1 1 1 1 1 1 M . . .
. . . . M 1 9 1 9 1 1 1 1 1 9 1 9 9 1 1 1 1 9 1 10 M . . . .
. . . . . M 1 1 9 1 1 9 1 1 1 1 1 1 1 1 9 1 1 M M . . . . .
. . . . . . M M 1 1 1 1 1 1 1 1 1 1 9 1 1 M M M . . . . . .
. . . . . . . . M M 1 1 1 1 1 1 1 1 1 1 M M . . . . . . . .
. . . . . . . . . M M M M M 1 8 8 M M M M . . . . . . . . .
'============================
'将这里面的字符顺序写入excel中,我的程序写完要2分半钟,太慢了,下面是我的程序
Dim i As Integer, j As Integer
Dim map1 As String
map1 = "d:\map.xls" '这个excel,随便建一个改名就可以了
Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
xlApp.Visible = False '设置EXCEL是否可见
Set xlBook = xlApp.Workbooks.Open(map1) '打开EXCEL工作簿
Set xlsheet = xlBook.Worksheets(2) '打开EXCEL工作表
xlsheet.Activate '激活工作表
Dim strIn As String
Open App.Path & "\1.dat" For Input As #1
Do Until EOF(1)
Line Input #1, strIn
If Left(Trim(strIn), 1) = "." Or Left(Trim(strIn), 1) = "M" Then
strIn = Replace(strIn, " ", "")
For i = 1 To Len(strIn)
xlsheet.Cells(10 + j, i).Value = Mid(strIn, i, 1)
Next i
j = j + 1
End If
Loop
Close #1
'xlBook.Saved = True '我加了这一句,却没有保存的,不知怎么回事?
xlBook.Close
xlApp.Quit
Set xlApp = Nothing
MsgBox "ok", vbInformation
'===================================
谁帮我看看,怎么写才能快一些,我一次可能要读写25个的文本,写25个excel的,谢谢了
[解决办法]
关键是这句:xlsheet.Cells(10 + j, i).Value = Mid(strIn, i, 1)
不要一个一个单元格去赋值,要用.Range(.Cells(3, 2), .Cells(i + 3, j + 1)).Value = SheetRange之类的写法,SheetRange是个二维数组,把你的文件先赋值到数组中,再一次性赋值到EXCEL中,与一个CELLS赋值,速度至少相差十倍。
另,贴子可以加分的……
[解决办法]
'xlBook.Saved = True '我加了这一句,却没有保存的,不知怎么回事?
前面多了',所以结果你加的就变为注释了,呵呵
[解决办法]
Dim aryExce() As String 'Row为读取到的列,Col为读取到的行 ReDim Preserve aryExce(1 To Row, 1 To Col) As String '把内容放放二维数组 Xlssheet.Range("a1").Resize(Row, Col).Value = aryExce