【发布时间】:2012-04-30 02:45:41
【问题描述】:
我有一个大型 Excel 工作簿,其中包含多个工作表,其中包含链接到大型 PowerPivot 源的数据透视表。我想将每个工作表分别保存到工作簿中,仅作为值。
我设法在没有数据透视表的工作簿上做到了这一点。但是我收到了这个项目的以下消息。我不想为每个保存复制嵌入的数据,因为它非常慢。有什么提示或帮助吗?
Option Explicit
Sub JhSeparateSave()
Dim ws As Worksheet
Dim NewName As String
If MsgBox("Copy specific sheets to a new workbook" & vbCr & _
"New sheets will be pasted as values, named ranges removed" _
, vbYesNo, "NewCopy") = vbNo Then Exit Sub
' Input box to name new file
NewName = InputBox("Please Specify the name of your new workbook", "New Copy")
With Application
.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
MsgBox ("Copy step 1")
ws.Copy
With ActiveWorkbook.Sheets(1).UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & NewName & "-" & ws.Name
ActiveWorkbook.Close
MsgBox ("Saved sheet: " & ws.Name)
End If
Next ws
End With
End Sub
【问题讨论】:
-
与其做“复制”和“粘贴值”,不如直接保存为csv?
-
我不想要 csv... 我想要一个可以发送给其他同事的 xlsx
-
还有一个选项,暂时保存为csv,保存为xlsx后立即删除csv?
标签: excel vba copy-paste pivot-table