我有2个格式相同的Excel文件,但一个是主文件(用于计算),一个文件是从系统中提取的数据。我想用 VBA 将提取的文件的数据复制到主文件,但它不起作用。
所以我想从 A1 复制到 I200,然后将其粘贴到主文件,但它引发错误“要执行此操作,所有合并的单元格需要具有相同的大小”或“Range 类的 PasteSpecial 方法失败”。
下面是我的示例代码:
Sub TransferData()
Dim main_wb As Workbook
Dim target_wb As Workbook
Application.ScreenUpdating = False
Set main_wb = Workbooks.Open("C:/Users/admin/Documents/Sample.xlsx")
main_sheet = "Sheet1"
Set target_wb = ThisWorkbook
target_sheet = "Sheet1"
main_wb.Sheets(main_sheet).Range("A1:I200").Copy
target_wb.Sheets(target_sheet).Range("A1").PasteSpecial xlPasteValues
Application.ScreenUpdating = True
End Sub
如何复制合并的单元格?谢谢你。
如果只想复制数据,则不要使用
Copy
和PasteSpecial
,而是将数据读入二维数组并将数组数据写入目标。这将使目标的格式保持完整,包括合并区域。如果目标包含与源不同的合并区域,它不会抛出错误。
如果源和目的地具有相同的合并区域,则无论如何一切都很好(标记为绿色)。
如果源包含合并区域,而目标具有单个(未合并)单元格,则仅填充目标的第一个单元格(标记为黄色)。
如果源包含单个单元格,而目标具有合并数组,则复制第一个单元格的值(标记为红色)。
您的代码可能如下所示:
Dim sourceRange As Range, destRange As Range
Set sourceRange = main_wb.Sheets(main_sheet).Range("A1:I200")
Set destRange = target_wb.Sheets(target_sheet).Range("A1").Resize(sourceRange.Rows.Count, sourceRange.Columns.Count)
Dim data As Variant
data = sourceRange.Value
destRange.Value = data