使用VBA按模板生成文档

时间:2018-07-26 09:33:21

标签: excel vba excel-vba documentation

我目前正在从事一个项目,该项目包括基于表数据和文档模板在新工作簿中生成各种文档示例。这是我尝试过的:

Sub CopyData()
    Sheets("Staff").Select

    For i = 2 To 100000
        If Cells(i, 1).Value = "" Then
            i = 100000
            Exit For
        End If

        Sheets("TEMPLATE_TARGET").Select

        Range("Name").Value = Sheets("Staff").Cells(i, 1).Value & " " & _
        Range("Personalcode").Value = Sheets("Staff").Cells(i, 3).Value
        Range("Residence").Value = Sheets("Staff").Cells(i, 4).Value
        Range("Job").Value = Sheets("Staff").Cells(i, 5).Value
        Cells.copy
        Selection.Copy

        Worksheets.Add.Name = Sheets("Staff").Cells(i, 1).Value

        Application.DisplayAlerts = False
        ActiveSheet.Paste
        Application.CutCopyMode = False

        Sheets("Staff").Select
    Next i

    MsgBox ("YAY")
End Sub

不幸的是,我的代码在进程中间停止执行,声称工作表(“ Staff”)已经存在,因此-超出范围。您如何建议将生成最终结果的选项指示为解决此问题的新工作簿?提前致谢。

2 个答案:

答案 0 :(得分:3)

尝试一下:

声明变量As Worksheet,然后将其设置为add方法。

Dim oWorkSheet As worksheet

Set oWorkSheet = ThisWorkbook.Sheets.Add(, , 1, xlWorksheet)
oWorkSheet.Name = "nameOfYourSheet" 'must be different from the others sheets.

答案 1 :(得分:1)

替换

Worksheets.Add.Name = Sheets("Staff").Cells(i, 1).Value

使用

With Worksheets.Add
    .Name = Sheets("Staff").Cells(i, 1).Value
End With