Vba 添加工作表时指定[类型]

Vba 添加工作表时指定[类型],vba,excel,Vba,Excel,我需要一个Excel工作表,每行都有数据,以便运行宏,为每行创建一个工作表,并使用保存在计算机上的自定义模板创建每个工作表 到目前为止,我有宏来打开工作表中的每一行,但我不知道如何使用自定义模板打开工作表。另外,我想重命名每个工作表中对应于特定单元格的每个工作表 我用于从每行创建新图纸的当前代码为: Sub RowToSheet() Dim xRow As Long Dim I As Long With ActiveSheet xRow = .Range(

我需要一个Excel工作表,每行都有数据,以便运行宏,为每行创建一个工作表,并使用保存在计算机上的自定义模板创建每个工作表

到目前为止,我有宏来打开工作表中的每一行,但我不知道如何使用自定义模板打开工作表。另外,我想重命名每个工作表中对应于特定单元格的每个工作表

我用于从每行创建新图纸的当前代码为:

Sub RowToSheet()
    Dim xRow As Long
    Dim I As Long
    With ActiveSheet
        xRow = .Range("A" & Rows.Count).End(xlUp).Row
        For I = 1 To xRow
            Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
            .Rows(I).Copy Sheets("Row " & I).Range("A1")
        Next I
    End With
End Sub

这里的Excel对象模型有一个恼人的问题。无法使用工作表。请添加,然后使用类型参数指定模板。如果你使用Sheets.Add,那么它就可以工作了

试试这个:

Dim NewSheet As Worksheet
Set NewSheet = Sheets.Add(After:=Sheets(Sheets.Count), Type:=TemplatePath)
NewSheet.Name = "Row " & I.Rows(I)
NewSheet.Copy Sheets("Row " & I).Range("A1")

将TemplatePath变量设置为合适的路径。

这就是我用来从每一行创建新工作表的方法打开工作表中的每一行的方法这意味着什么?您的意思是将每一行复制到工作表-未打开?如果您有模板(*.xltx),则可以使用
工作簿将其作为常规工作簿打开。打开
。当然,原始模板文件保持不变。我有一个电子表格,每一行都是个人信息,我在同一个excel工作簿中创建一个新工作表,每一行信息都在创建的每个工作表的第一行。但是您的代码已经在做了…这对VBA来说根本不是一个烦人的问题。VBA不是Excel对象模型。很抱歉这么迂腐,但这类事情证明了我的观点,VBA作为一种语言所受到的95%的憎恨实际上是针对IDE或人们使用的类型库的。FWIW
工作表
集合只能产生
工作表
对象,因此完全有理由不使用
类型
参数。看起来
Add
方法/签名继承自不太专业的
Sheets
集合的接口,该接口处理了相当多的遗留工作表类型。也就是说,+1用于阐明一个相当模糊/很少使用的参数。不过,删掉那些被误导的烦恼会很好。