首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

vb将读到的字符写下excel很慢

2012-08-09 
vb将读到的字符写入excel很慢vb将读到的字符写入excel很慢文本 1.dat.....

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 '我加了这一句,却没有保存的,不知怎么回事?
前面多了',所以结果你加的就变为注释了,呵呵
[解决办法]

VB code
        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 

热点排行