excel - 在工作簿中创建所选工作表的副本并将值仅粘贴到另一个并保留源格式
问题描述
我正在尝试创建一个“报表打印机”,它采用选定的工作表并将值仅粘贴到另一个工作簿中,同时保留格式。
我正在使用的文档是一个非常大的工作簿(我们称之为源代码),其中包含很多公式、链接和宏,有几个(准确地说是 6 个)“报告”页面从工作中获取信息工作表并以一种很好的方式显示它们。我正在尝试找到一种方法将这些报告页面放入另一个工作簿并将它们仅转化为价值并保留所有可爱的格式。
我试过这个宏
`Sub copyPrintValues()
Dim ReportPrintOutput As Workbook
Dim Current As String
Dim FileName As String
Set ReportPrintOutput = ThisWorkbook
Current = ThisWorkbook.FullName
Application.DisplayAlerts = False
Dim SH As Worksheet
For Each SH In ReportPrintOutput.Worksheets
SH.UsedRange.Copy
SH.UsedRange.PasteSpecial xlPasteColumnWidths
SH.UsedRange.PasteSpecial xlPasteFormats
SH.UsedRange.PasteSpecial xlPasteValues, _
Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Next
Worksheets("WorkSheet1").Delete
FileName = ThisWorkbook.Path & "\" & Pre & ThisWorkbook.Name & "_ReportPrint.xlsx"
ReportPrintOutput.SaveAs FileName, XlFileFormat.xlOpenXMLWorkbook
Workbooks.Open Current
PrintOutput.Close
Application.DisplayAlerts = True
End Sub`
我在想的理论是复制到输出的所有内容,然后删除输出中我不需要的工作表(通过 vba)。
任何建议都会有很大帮助,我一直在努力让它发挥作用!
解决方案
保存源文件的临时副本,然后为每个工作表运行UsedRange.Value = UsedRange.Value
以删除公式(或仅在“报告”工作表上执行此操作)。现在您可以删除不想保留的工作表。
Sub NoFormulas()
Dim wbTemp As Workbook, tempPath As String, sht As Worksheet, wbReport As Workbook
Dim ReportPrintOutput As Workbook
Dim Current As String
Dim FileName As String
tempPath = ThisWorkbook.Path & "\" & "temp_" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs tempPath
Set wbTemp = Workbooks.Open(tempPath)
For Each sht In wbTemp.Worksheets
sht.UsedRange.Value = sht.UsedRange.Value
Next sht
wbTemp.Sheets(Array("Sheet1", "Sheet3")).Copy '<< copy the needed sheets to a new workbook
Set wbReport = ActiveWorkbook
wbReport.SaveAs ThisWorkbook.Path & "\Report.xlsx"
wbTemp.Close False 'close and delete the temporary copy
Kill tempPath
End Sub
推荐阅读
- filenet-p8 - 无法在 IBM Content Navigator 与 Content Platform 之间建立连接
- processing - 期待EOF,找到'for',正在处理
- php - 安排执行一次的 PHP 脚本
- asp.net-mvc - ASP MVC 项目中的 Angular:模板未显示
- azure - 将配置值注入 Helm Chart
- jasmine - 如何在量角器 e2e 测试中创建警报对话框?
- sql - 如何使用自动完成 WHEN 子句进行 SUM
- python - PyGame 学习环境和 NEAT-Python
- node.js - 如何处理 Node.js 中的异步错误
- angular - 如何将附加行附加到现有的 Observable