我有工作簿,其中包含数据包含颜色的工作表,下拉(使用下拉选项,单元格更改其颜色)等格式。我一直试图创建特定工作表的副本并使用简单的右键单击发送它,并创建副本到新工作簿,创建副本但不携带基于文本值的单元格颜色。到目前为止,我已经尝试使用不同的VB代码来实现它,它们产生相同的结果 - 创建新的工作簿并粘贴数据但没有格式化。我尝试过使用以下代码:
Sub CopySheetToNewWorkbook1()
Dim wname As String
wname = ActiveCell.Value
Sheets(wname).Cells.Copy
Set nbook = Workbooks.Add(1)
With nbook.Sheets(1)
.Cells.PasteSpecial xlValues
.Cells.PasteSpecial xlFormats
End With
Range("a:l").EntireColumn.AutoFit
End Sub
另一次尝试:
Sub CopySheetToNewWorkbook2()
Dim wname As String
wname = ActiveCell.Value
Sheets(wname).Activate
Range("a1:l25").Copy
Set nbook = Workbooks.Add(1)
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, SkipBlanks:=False
Range("a:l").EntireColumn.AutoFit
End Sub
我认为这个可以保存工作簿,保留所有格式,但又一次没有帮助。 (它还能够创建副本但没有得到保存,出现错误消息"方法另存为对象工作簿失败"):
Sub CopySheetToNewWorkbook3()
Dim wname As String
wname = ActiveCell.Value
Sheets(wname).Copy
ActiveWorkbook.SaveAs "C:\Data:\Roster.xlsx", FileFormat:=51
End Sub
在我放弃并决定寻求帮助之前的最后一次尝试(在这一次我不知道如何将过去引用到新工作簿中 - 绝对失败:
Sub CopySheetToNewWorkbook4()
Dim wname As String
wname = ActiveCell.Value
Set nbook = Workbooks.Add
Sheets(wname).Copy before:=Workbook.nbook.seehts(1)
With nbook.Sheets(1).UsedRange
.Value = .Value
End With
End Sub
我希望我可以指出正确的方向,因为我尝试了所有可能的帮助,直到现在都没有成功。
答案 0 :(得分:0)
这将:
在标准模块中:
Sub Macro1()
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs _
Filename:="C:\Users\garys\Desktop\newname.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
CreateBackup:=False
ActiveWorkbook.Close
End Sub