【问题标题】:Copying worksheet as new workbook keeping format, dropdown list etc将工作表复制为新的工作簿保存格式、下拉列表等
【发布时间】:2017-05-30 01:55:55
【问题描述】:

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

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

【问题讨论】:

  • 我想补充一点,通过上述所有尝试,它确实复制了某些单元格的单元格颜色,但不是全部。
  • (a) 我假设在所有这些尝试中,调用宏时活动单元格的值是要复制的工作表的名称? (b) 在CopySheetToNewWorkbook4 中,Workbook.nbook.seehts(1) 应该是 nbook.Sheets(1) 才有意义,但 Sheets(wname) 不会存在于新工作簿中,因此副本将不起作用。 (c) 在CopySheetToNewWorkbook3 中,您的文件名无效 - 路径不能包含 : - 这是为驱动器和路径之间的分隔符保留的。
  • @YowE3K 是的,我有工作表名称列表,并且所有工作表都存在于工作表中,由工作表名称列表(即 activecell.value)引用。
  • @YowE3K 感谢所有输入,我纠正了所有输入,但我在同一点上.. 你想发出任何朝着正确方向移动的信号,我可以尝试确保细胞形成被复制到新的工作簿中?

标签: excel vba


【解决方案1】:

这将:

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

在标准模块中:

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

【讨论】:

  • 谢谢你,但它让我得到了相同的输出 - 它使用所有数据创建新工作簿,但不复制单元格中的颜色(基于下拉选择的文本..以防万一此信息可以提供任何帮助)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 2013-02-27
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多