2017-04-07 64 views
1

我在VBA編程方面比較新。我想插入一個模板到我的工作表中。我已經有了這個代碼,現在,對於第一步工作:如何在worksheet.add命令中指定路徑?

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 

我知道,如果你要插入一個模板,這些步驟如下: 表達:。新增(前,後,計數,類型)

類型指定紙張類型。可以是以下XlSheetType常量之一:xlWorksheet,xlChart,xlExcel4MacroSheet或xlExcel4IntlMacroSheet。如果要基於現有模板插入工作表,請指定模板的路徑。缺省值是xlWorksheet。

我真的需要類型鏈接到我的Projectonderdelen.xltm,位於C:\用戶\臺\文檔\ Aangepaste辦公室,sjablonen

誰能幫我從這個痛苦嗎?

問候,布倫登

回答

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)中如果條件是錯誤的:你可以不使用或這意味着檢查目標列是否爲2,這將是True或False,然後評估True/False或3,即3,如果將非零值轉換爲布爾值,則它們將爲True,所以這種情況總是評估爲真。

2)要從模板工作簿的工作表中複製,您需要將其打開。我也在代碼中關閉它,假設它最初沒有打開。

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

歡迎來到StackOverflow。

+0

我得到這麼多的錯誤,我覺得首先我這需要一些培訓。感謝您的努力,Brendon – Brendon

0

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,它可以讓你更多的功能在未來添加更多的場景

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

謝謝,這有點幫助,並且您知道如何在添加新工作表時鏈接模板嗎? – Brendon

+0

只需將模板的鏈接放入'Type'參數中即可。 'Worksheets.Add after:= Worksheets(Worksheets.Count),Type:=「C:\ Users \ stage \ Documents \ Aangepaste Office-sjablonen \ Projectonderdelen.xltm」'。模板中的所有圖紙都將被複制。 –

+0

@VincentG這是我的第一個猜測,但沒有奏效。所以我想我的代碼的其他部分不適合這個,或者我搞砸了我的模板。謝謝 – Brendon