【问题标题】:Copying data and conditional formatting from one workbook to another using VBA使用 VBA 将数据和条件格式从一个工作簿复制到另一个工作簿
【发布时间】:2017-11-21 18:29:26
【问题描述】:

我正在尝试将数据和条件格式从一个工作簿复制到另一个工作簿。我可以将数据传输到我的主工作簿,但条件格式已被删除。如何将数据和条件格式从一个工作簿复制到另一个工作簿?

这是我目前所拥有的:

Dim Master As Workbook 
Set Master = ActiveWorkbook 
Dim lastRow As Long 
lastRow = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row 
Range("A2:AE2" & lastRow).Select Selection.Copy 
Master.Activate
ThisWorkbook.ActiveSheet.Cells(lastRow, 1).Paste

我尝试过选择性粘贴,但它也不起作用。

【问题讨论】:

  • 我想你用.PasteSpecial代替.Paste,见stackoverflow.com/questions/41725730/…
  • 我查看了相同的线程并认为它会起作用,但它没有。它会粘贴所有格式、数据和单元格边框,但不会复制条件格式。我有条件格式,可以根据 A 列中的 IFERROR 语句突出显示临时电子表格的整行。
  • 我创建了两个 Excel 工作簿,在其中创建了一个具有条件格式的单元格,并成功地将其复制到另一个带有 Workbooks("book1").Worksheets("sheet1").Range("a1").Copy Destination:=Workbooks("book2").Worksheets("sheet1").Range("a1") 的工作簿。条件格式被复制到 OK,所以我会从这里开始工作,然后慢慢地将其更改为您想要的,然后查看它何时停止工作。还有什么版本的excel?
  • Range("A2:AE2" & lastRow).Select Selection.Copy 这一行又是怎么回事?我不认为select方法有任何参数?
  • 我使用的是 Excel 2010。那不起作用。 PasteSpecial 不会将任何信息粘贴到我的主工作簿中。

标签: vba excel conditional-formatting


【解决方案1】:

使用xlPasteFormats

https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.xlpastetype.aspx

ThisWorkbook.ActiveSheet.Cells(lastRow, 1).PasteSpecial xlPasteFormats

如果这不起作用,请尝试粘贴两次。首先是值,然后是格式。

ThisWorkbook.ActiveSheet.Cells(lastRow, 1).PasteSpecial xlPasteValues
ThisWorkbook.ActiveSheet.Cells(lastRow, 1).PasteSpecial xlPasteFormats

【讨论】:

  • 当我尝试这种方法时,它不会从我的临时工作簿中粘贴任何内容。知道为什么会这样吗?
  • 可能是使用 ActiveSheet 的问题。要么确保首先选择合适的工作表Sheets('mySheet').Select——或者,更好的是,只需从ThisWorkbook.Sheets('mySheet').Cells引用您要复制的工作表
  • 那么,当我从临时工作簿复制数据时,我应该如何编写代码以切换回我的主电子表格并激活它?现在我这样做了:Master.Activate ThisWorkbook.ActiveSheet.Cells(lastRow, 1).PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
  • 是 lastRow 扔掉它吗?我不相信,但我想这是可能的。
  • 作为一种好的做法,您不应该使用 ActiveSheet,而是始终使用对您打算使用的任何工作表的直接引用。只要您直接引用它,您就无需在与它交互之前选择它。如果您想切换回您的主表,那么同样适用,选择并激活它。 Sheets('myMasterSheet').Select 然后 Sheets('myMasterSheet').Activate --- 请记住,如果您直接引用它,则不需要实际选择或激活工作表。 ThisWorkbook.Sheets('myMasterSheet').Cells
猜你喜欢
  • 2023-02-02
  • 2017-02-26
  • 1970-01-01
  • 2022-11-25
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
相关资源
最近更新 更多