本人在VB下生成EXCEL报表,先把要写入的数据组装起来然后放到数组当中去,用chr(9)和Chr(13)Chr(10)把它们按行列分隔开,然后统一放到剪贴板上,再把数据复制到EXCEL当中,这样速度可以比一个个写快很多。但是有个问题,就是如果有数据本身包含有回车换行符{既chr(13)chr(10)}的话,这样粘贴的时候就会把回车换行后的值写入到下一个单元格当中去,请问在复制粘贴的方法下要如何解决呢?另外我发现有的繁体中文的数据直接写入单元格没问题,但是一从剪贴板过去的话就程序报错了。这是为什么呢?请大家帮忙,谢谢。

解决方案 »

  1.   

    数组可以直接赋值到 excel 的 range,比一格一格写快,比通过剪贴板处理安全。 ...range("A1:B10").value=arrData
      

  2.   

    让Excel得到聚焦。发送Ctrl+V键,即可!
    Ctrl+V,好像是这样写SendKeys "^V"建议还是采用Excel对象编程好一点。
      

  3.   

    回复人:fxy_2002(阿勇) ( 两星(中级)) 信誉:100  2007-8-8 9:06:53  得分:0数组可以直接赋值到 excel 的 range,比一格一格写快,比通过剪贴板处理安全。...range("A1:B10").value=arrData这样用会更快:
    objSheet.range("A1:B10").Range(UBound(arrData, 1) - LBound(arrData, 1) + 1, UBound(arrData, 2) - LBound(arrData, 2) + 1).Value = arrData
      

  4.   

    这样好象也解决不了如果单元格里面有回车换行符的问题啊?----跟有没有回车换行还有啥关系?单元格的数据就是数组的一个无素,这个元素放什么内容excel都会接受,与你粘贴后excel再自动根据换行符帮你分列是不一样的。试试以下代码:    Dim oexcel As New Excel.Application
        Dim obook As Excel.Workbook
        Dim osheet As Excel.Worksheet
        
        Set obook = oexcel.Workbooks.Add()
        Set osheet = obook.Worksheets.Add()    Dim arrdata(1, 1) As String
        
        arrdata(0, 0) = "abc" & vbCrLf & "123"
        arrdata(0, 1) = "1234567"
        arrdata(1, 0) = "哈哈"
        arrdata(1, 1) = "我这里有两个换行" & vbCrLf & vbCrLf & "!!!"    osheet.Range("A1:B2").Value = arrdata
        
        oexcel.Visible = True
      

  5.   

    这样用会更快:
    objSheet.range("A1:B10").Range(UBound(arrData, 1) - LBound(arrData, 1) + 1, UBound(arrData, 2) - LBound(arrData, 2) + 1).Value = arrData
    ---------------难道我的excel版本低?用我原来的写法没问题,用这个写法得了个错误:应用程序定义或对象定义错误!