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

时间:2017-04-07 06:50:21

标签: excel vba excel-vba

我对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

我知道如果要插入模板,请执行以下步骤: 表达式:.Add(Before,After,Count,Type)

Type指定工作表类型。可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。如果要基于现有模板插入工作表,请指定模板的路径。默认值为xlWorksheet。

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

有人可以帮我解决这个痛苦吗?

问候,布兰登

2 个答案:

答案 0 :(得分:0)

我认为你需要这样的东西:

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,这将是True或False,然后评估True / False或3,这是3,如果你将非零值转换为布尔值,它们将为True,所以这个条件总是计算为True。

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

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

欢迎使用StackOverflow。

答案 1 :(得分:0)

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

使用:

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

或者,切换到Select Case,这可以让您在将来更多功能添加更多场景

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