我创建了一个工作簿,其中包含语言课程的所有管理详细信息。它有几个工作表:
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上弄湿了脚趾)。
注意:如果我的问题和解释不清楚,请帮助我改进它们。
答案 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