C# Excel自动报告模板

C# Excel自动报告模板,c#,vba,excel,C#,Vba,Excel,我被要求在一张工作表中根据信息生成报告。有30多个报告要生成。我已将计算准备单元的链接设置为模板(数据可以从另一张表中过滤出来供报告使用),只需将模板复制到新创建的表中,并更改一个指示每个报告特定标识符的单元,即可生成新报告。 这里的问题是: 我仍然需要复制和粘贴30次,并更改报告的标识符。是否有任何方法可以基于VBA或其他工具构建一个程序,以自动化利用已构建模板的过程,而无需重新编码每个单元格值的赋值?多谢各位 给你。创建两张名为“Template”和“ControlSheet”的工作表。在“

我被要求在一张工作表中根据信息生成报告。有30多个报告要生成。我已将计算准备单元的链接设置为模板(数据可以从另一张表中过滤出来供报告使用),只需将模板复制到新创建的表中,并更改一个指示每个报告特定标识符的单元,即可生成新报告。
这里的问题是:

我仍然需要复制和粘贴30次,并更改报告的标识符。是否有任何方法可以基于VBA或其他工具构建一个程序,以自动化利用已构建模板的过程,而无需重新编码每个单元格值的赋值?多谢各位

给你。创建两张名为“Template”和“ControlSheet”的工作表。在“ControlSheet”上创建两列:第一列包含新工作表的名称,第二列包含参数值。然后添加此宏:

Public Const TemplateSheetName = "Template"
Public Const ControlSheetName = "ControlSheet"
Public Const ControlSheetFirstCell = "A2"
Public Const TargetCell = "B5"

Sub ParseReport()
    Dim i As Integer
    Dim NextSheetName As String
    Dim NextSheetValue As Variant
    i = 0
    Do While True
        NextSheetName = Sheets(ControlSheetName).Range(ControlSheetFirstCell).Offset(i, 0).Cells(1, 1).Value
        If NextSheetName = "" Then
            Exit Do
        End If
        NextSheetValue = Sheets(ControlSheetName).Range(ControlSheetFirstCell).Offset(i, 0).Cells(1, 2).Value
        Sheets(TemplateSheetName).Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
        ActiveSheet.Name = NextSheetName
        ActiveSheet.Range(TargetCell) = NextSheetValue
        i = i + 1
    Loop
End Sub
ControlSheetFirstCell—控制表中包含要创建的工作表名称的列中的第一个单元格。这些值位于右侧的列中。
TargetCell-新创建的工作表上的单元格,您需要在其中写入报告参数

很抱歉我的答复太晚。非常感谢你!不客气!如果您能将我的回答作为解决方案,我将不胜感激。非常感谢。