将工作表复制到另一个工作簿,同时更改其名称

时间:2017-09-15 16:01:44

标签: excel-vba vba excel

我创建了一个工作簿,其中包含语言课程的所有管理详细信息。它有几个工作表:

1-课程数据
2-学生数据
3-课程管理报告
4-学生成绩报告
5-学生标记数据

教师只能访问最后一张工作表:他们会收到一份工作簿,其中包含单个工作表,其中包含学生摘要和课程详细信息,并在整个课程中输入学生的分数。最后,我将这些标记重新导入原始工作簿。

我成功地使用vba来完成上述工作(并为工作簿提供一个特定的名称),以便教师可以掌握它的权力。 (见下文摘录)

Sheets("NotasProfSem").Select
    Dim filePath As String
        Calculate
    filePath = Range("AP2").Value & Range("AP3").Value & ".xlsx
    Sheets("NotasProfSem").Copy
    ActiveWorkbook.SaveAs Filename:=filePath, _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    ActiveWindow.Close

但学生&课程信息仍然链接到原始文件。所以我设计了一个解决方法:将工作表 NotasProfSem 复制到与 NotasProfSem2 相同的工作簿中,将链接转换为值,然后将 NotasProfSem2 复制到一本新的工作簿。但我需要将工作表的名称恢复为原始的 NotasProfSem

问题:当我将vba代码复制到全新的工作簿中时,如何更改工作表的名称?

提供替代解决方案:我也会对允许我执行“复制”>的替代方案感兴趣。将工作表复制到新工作簿时,一组单元格的“粘贴值”。 (如果可能而且容易 - 我只是在vba上弄湿了脚趾)。

注意:如果我的问题和解释不清楚,请帮助我改进它们。

1 个答案:

答案 0 :(得分:0)

这应该是你的伎俩:

Sheets("NotasProfSem").Copy

Dim wbProf as Workbook
Set wbProf = ActiveWorkbook

'remove links and formulas
With wbProf
     'this may not work as is depending on data structure, if not you may need to be more explicit with ranges / cells
    .Sheets(1).UsedRange.Value = wbProf.Sheets(1).UsedRange.Value
    .SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
    .Close False
 End