以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]跨表复制区域数据的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=179532)

--  作者:chnfo
--  发布时间:2022/8/28 17:45:00
--  [求助]跨表复制区域数据的问题
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Reports\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Range("C1:I3").Copy
App.quit

wb = App.WorkBooks.Open(ProjectPath & "Reports\\001.xls")
ws = Wb.WorkSheets(1)
Ws.Range("G5").Select
Ws.Paste
Wb.Save
App.quit

test.xls的数据是有合并单元格的

图片点击可在新窗口打开查看此主题相关图片如下:原数据.png
图片点击可在新窗口打开查看
复制到001.xls里以后,成了这样的

图片点击可在新窗口打开查看此主题相关图片如下:粘贴结果.png
图片点击可在新窗口打开查看

为什么粘贴结果会没有合并单元格的样子呢?

即使把下面这一段改为
wb = App.WorkBooks.Open(ProjectPath & "Reports\\001.xls")
ws = Wb.WorkSheets(1)
Ws.Range("C1:I3").Select  ‘这个跟源区域的范围一样,但出来的结果仍然是一样的跟源区域不同’
Ws.Paste
Wb.Save
App.quit
[此贴子已经被作者于2022/8/28 17:48:02编辑过]

--  作者:有点蓝
--  发布时间:2022/8/28 20:35:00
--  
wb = App.WorkBooks.Open(ProjectPath & "Reports\\001.xls")
ws = Wb.WorkSheets(1)
Ws.Range("G5").Select
Ws.Range("G5").PasteSpecial()
Wb.Save
App.quit

--  作者:chnfo
--  发布时间:2022/8/28 21:56:00
--  
Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open(ProjectPath & "Reports\\test.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
Ws.Range("C1:I3").Copy
\'App.quit                 \'关键点可能是这一行,应当注释掉,有可能是在复制源表在关闭的情况下,直接复制就会导致合并单元格粘贴失效

wb = App.WorkBooks.Open(ProjectPath & "Reports\\001.xls")
ws = Wb.WorkSheets(1)
Ws.Range("G5").Select
Ws.Paste   \'用pastespecial也可以,两者的结果是一样的
Wb.Save
App.quit