将工作表复制为新工作簿保留格式,下拉列表等

时间:2017-05-30 01:55:56

标签: excel excel-vba vba

我有工作簿,其中包含数据包含颜色的工作表,下拉(使用下拉选项,单元格更改其颜色)等格式。我一直试图创建特定工作表的副本并使用简单的右键单击发送它,并创建副本到新工作簿,创建副本但不携带基于文本值的单元格颜色。到目前为止,我已经尝试使用不同的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

我希望我可以指出正确的方向,因为我尝试了所有可能的帮助,直到现在都没有成功。

1 个答案:

答案 0 :(得分:0)

这将:

  • 将工作表复制到新工作簿
  • 保存新工作簿
  • 关闭新工作簿
  • control然后返回原始工作簿

在标准模块中:

Sub Macro1()
Sheets("Sheet1").Copy
ActiveWorkbook.SaveAs _
    Filename:="C:\Users\garys\Desktop\newname.xlsm", _
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, _
    CreateBackup:=False
ActiveWorkbook.Close
End Sub