如何在worksheet.add命令中指定path?

我在VBA编程方面比较新。 我想插入一个模板到我的工作表中。 我现在已经有了这个代码,可以用于第一步:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Column = 2 Or 3 Or 4 Or 5 Then Worksheets.Add after:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = Target End If End Sub 

我知道如果你想插入一个模板,这些步骤是:expression式:.Add(之前,之后,计数,types)

types指定表单types。 可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。 如果要根据现有模板插入工作表,请指定模板的path。 默认值是xlWorksheet。

我真的需要链接到我的Projectonderdelen.xltm,位于C:\ Users \ stage \ Documents \ Aangepaste Office-sjablonen

任何人都可以帮助我从这痛苦请?

问候,Brendon

If Target.Column = 2 Or 3 Or 4 Or 5 Then是不正确的syntx。

可以使用:

 If Target.Column = 2 Or Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5 Then 

或者,切换到Select Case ,这可以使您在未来更多function添加更多的场景

 Select Case Target.Column Case 2 To 5 Worksheets.Add after:=Worksheets(Worksheets.Count) Worksheets(Worksheets.Count).Name = Target.Value End Select 

我想你需要这样的东西:

 Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If 2 <= Target.Column And Target.Column <= 5 Then Dim ewbSource As Workbook: Set ewbSource = Application.Workbooks.Open("C:\Users\stage\Documents\Aangepaste Office-sjablonen\Projectonderdelen.xltm", False, True) ewbSource.Worksheets("NameOfYourWorkSheet").Copy ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = Target.Value ewbSource.Close False End If End Sub 

请注意:

1)If中的条件是错误的:你不能用这种方式,这将意味着检查目标Column是否为2,这将是真或假,然后评估真/假或3,这是3,如果将非零值转换为布尔值,则它们将为True,所以此条件总是计算为True。

2)要从模板工作簿的工作表中复制,您需要将其打开。 我也在代码中closures它,假设它最初没有打开。

3)使用完全限定的名称:ThisWorkbook.Worksheets不是ActiveWorkbook.Worksheets相同。

欢迎来到StackOverflow。