数据从剪贴板粘贴到EXCEL的问题

smuwcwt 2007-08-07 09:09:45
本人在VB下生成EXCEL报表,先把要写入的数据组装起来然后放到数组当中去,用chr(9)和Chr(13)Chr(10)把它们按行列分隔开,然后统一放到剪贴板上,再把数据复制到EXCEL当中,这样速度可以比一个个写快很多。但是有个问题,就是如果有数据本身包含有回车换行符{既chr(13)chr(10)}的话,这样粘贴的时候就会把回车换行后的值写入到下一个单元格当中去,请问在复制粘贴的方法下要如何解决呢?

另外我发现有的繁体中文的数据直接写入单元格没问题,但是一从剪贴板过去的话就程序报错了。这是为什么呢?请大家帮忙,谢谢。
...全文
495 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lz320382 2008-09-08
  • 打赏
  • 举报
回复
可否将使用剪贴板的方法的代码共享一下啊?
fxy_2002 2007-08-09
  • 打赏
  • 举报
回复
这样用会更快:
objSheet.range("A1:B10").Range(UBound(arrData, 1) - LBound(arrData, 1) + 1, UBound(arrData, 2) - LBound(arrData, 2) + 1).Value = arrData


---------------

难道我的excel版本低?用我原来的写法没问题,用这个写法得了个错误:应用程序定义或对象定义错误!
fxy_2002 2007-08-09
  • 打赏
  • 举报
回复
这样好象也解决不了如果单元格里面有回车换行符的问题啊?

----

跟有没有回车换行还有啥关系?单元格的数据就是数组的一个无素,这个元素放什么内容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
VBAdvisor 2007-08-09
  • 打赏
  • 举报
回复
回复人: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
WM_JAWIN 2007-08-08
  • 打赏
  • 举报
回复
让Excel得到聚焦。发送Ctrl+V键,即可!
Ctrl+V,好像是这样写SendKeys "^V"

建议还是采用Excel对象编程好一点。
smuwcwt 2007-08-08
  • 打赏
  • 举报
回复
这样好象也解决不了如果单元格里面有回车换行符的问题啊?
fxy_2002 2007-08-08
  • 打赏
  • 举报
回复
数组可以直接赋值到 excel 的 range,比一格一格写快,比通过剪贴板处理安全。

...range("A1:B10").value=arrData


7,765

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧