【发布时间】:2022-12-07 18:56:13
【问题描述】:
我有以下问题需要在 Excel 中解决。我绝对不是 VBA 专家。但我喜欢用 VBA 发现编程并解决问题以使事情变得更容易。当然会有更好的设置方法,但这就是我所拥有的。
我有的我有一个包含几张纸的 Excel 工作簿。 “数据”、“计算”、“Frontpage”、“TemplateS”、“模板”等....
- 数据表有很多关于测试组成员的个人数据。
- Calc sheet 会进行一些创建个人结果所需的计算。
- 首页表包含一些个人数据,用于使报告更“专业”。
- 模板和模板表是不同报告的“模板”。这些模板将用于创建每个成员的个人报告。
我做了什么
- 在我运行宏之前,我选择了我需要从中创建报告的模板(工作表)。
- 接下来,宏 (Sub Make_Reports_sheets) 遍历成员列表并创建报告。对于每个报告,都会创建一个包含每个成员的个人数据的新表格。因此,可以根据我选择的模板数量为每个成员创建一个或多个报告(工作表)。工作表命名为:Member1_ReportA、Member1_ReportB、Member1_ReportC、Member2_ReportA、Member2_ReportB 等。
- 我已经有了创建 pdf 文件的宏。但是我仍然错了一段代码来实现我的目标。
我想要达到的目标
- 创建个人会员报告后,我想将它们导出为 pdf 文件。每个 pdf 文件都包含属于某个成员的报告。必须包括首页。
我需要解决的是以下
- 如何在创建报告后自动选择工作表。在其前面放置一个首页,然后将此选择导出为 pdf。然后继续下一个成员并再次做同样的事情,等等......
有没有人有解决办法如何解决这个问题?非常感谢! 最相关的代码和平在这里
Sub Create_Report_Sheets() Dim SelectSheet As Object Dim ws As Worksheet Dim NewSheet As Worksheet Dim ListOfNames As Range 'List can contain more than 50 members Dim Cell As Range Set Select.Sheet = ActiveWindow.SelectedSheets Set ListOfNames = DataSheet.Range(A1:A & LastRow) ... For Each Cell In ListOfNames For Each ws In SelectSheet ws.Copy After:=Sheets(Sheets.Count) Set NewSheet = ActiveSheet With NewSheet .Name = Cell.Offset(0,1) & "ReportA" 'Do some stuff with this newsheet End With Next ws Next cell End Sub Sub Make_PDF() Dim ws As Worksheet Dim wb As Workbook Dim Frontpage As Worksheet Dim SelectSheet As Object Dim PathFile As String Set Frontpage = ThisWorkbook.Sheets("FrontPage") ... 'How to automatically select the reports (sheets) that belongs to a member? 'How to include a Frontpage as first page of the pdf file? .... With ws .Select .ExportAsFixedFormat _ .Type:=xlTypePDF, _ .FileName:=PathFile End With End Sub我必须对 SheetArray 和 ReDim 做些什么吗?我是否必须将我的两段代码组合在一起并一次处理所有代码?
【问题讨论】:
-
Frontpage 工作表是否需要针对特定成员进行过滤,以便在所述首页上仅显示她/他的个人数据?或者这应该如何处理?
-
感谢您的快速回复和一个很好的问题。我的解释不够清楚。不,首页上没有个人数据。一般只有一些数据(如测试日期等。所以,实际上,对于每个成员,我需要一个相同的首页。我的想法是动态制作首页的副本(当宏运行时创建pdf 文件。这可能吗?