【发布时间】:2019-05-27 23:23:13
【问题描述】:
我想复制并粘贴从工作簿 A 到工作簿 B 的特殊范围(值和 格式)。 问题是:值是粘贴而不是格式
我已经尝试了所有的 PasteSpecial,但都没有奏效...
Sub Macro_copy_paste_pivot()
Dim date_report As String
Dim appExcel As Excel.Application
Dim XLBook As Workbook
Set appExcel = CreateObject("Excel.Application")
Set XLBook = appExcel.Workbooks.Add
date_report = WorksheetFunction.WorkDay(Date, -1)
date_report = Format(date_report, "yyyy-mm-dd")
' COPY and PASTE the pivot EXO
Worksheets("Pivot EXO").Activate
ActiveSheet.PivotTables("Pivot EXO").PivotFields( _
"[Context].[AsOfDate].[AsOfDate]").VisibleItemsList = Array( _
"[Context].[AsOfDate].&[" & date_report & "T00:00:00]")
Range("P7:A24").Copy
XLBook.Sheets.Add.Name = "EXO"
XLBook.Worksheets("EXO").Range("P7:A24").PasteSpecial Paste:=xlPasteFormats
End Sub
那么,如何将工作簿 A 中的 format 粘贴到工作簿 B 中?
【问题讨论】:
-
XLBook.Worksheets("EXO").Range("P7:A24").PasteSpecial xlPasteValuesXLBook.Worksheets("EXO").Range("P7:A24").PasteSpecial xlPasteFormats -
不要使用
.Activate和ActiveSheet。而是直接使用工作表Worksheets("Pivot EXO").PivotTables…• 您可能会从阅读How to avoid using Select in Excel VBA 中受益。 • 还要始终为所有范围指定一个工作表Range("P7:A24").Copy,否则您会让 Excel 猜测要使用哪个工作表。指定为Worksheets("Pivot EXO").Range("P7:A24").Copy -
@Damian 我试过了,但这不起作用。我认为问题出在我复制/粘贴数据透视值的事实,或者我使用 Excel.Application.Workbooks.Add 的事实,所以我不使用“打开”。