2017-04-07 11 views
1

私はVBAでのプログラミングは比較的新しいです。ワークシートにテンプレートを挿入したいworksheet.addコマンドでパスを指定するにはどうすればよいですか?

.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 

テンプレートを挿入したい場合は、これらの手順は、次のとおりです: 式Iはすでに最初のステップのために働く今、このコードを持っています

タイプはシートの種類を指定します。 xlWorksheet、xlChart、xlExcel4MacroSheet、xlExcel4IntlMacroSheetのいずれかのXlSheetType定数を使用できます。既存のテンプレートに基づいてシートを挿入する場合は、テンプレートへのパスを指定します。デフォルト値はxlWorksheetです。

私は本当にCに位置、私Projectonderdelen.xltmにタイプをリンクする必要があります:\ Users \ユーザーステージ\ドキュメント\ Aangepasteオフィスsjablonen

誰もが、この苦しみから私を助けてくださいことはできますか?

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)の場合の条件が間違っていた:あなたが使用できない、または

挨拶、ブレンドン

答えて

0

は、私はあなたがこのようなものが必要だと思いますこの方法では、ターゲット列が2であるかどうかのチェックを意味します。これはTrueまたはFalseのいずれかになり、True/Falseまたは3、つまり3を評価し、0以外の値をブール値に変換するとTrueになります。この条件は常にTrueと評価されます。

2)テンプレートブックからシートからコピーするには、それを開く必要があります。私は、コードが開いていないと仮定してコードを閉じます。

3)完全修飾名を使用してください:ThisWorkbook.WorksheetsはActiveWorkbook.Worksheetsと同じではありません。

ようこそStackOverflow。

+0

を追加するために、将来的に、より汎用性を可能にする、私は私が最初だと思いますこの中でいくつかの訓練が必要になるでしょう。努力してくださった皆様、ありがとうございます。ブレンンド – Brendon

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 
+0

ありがとうございます、これはちょっと役立ちますし、新しいシートを追加する際にテンプレートをリンクする方法を知っていますか? – Brendon

+0

テンプレートのリンクを 'Type'パラメータに入れてください。 'Worksheets.Add after:=ワークシート(Worksheets.Count)、タイプ:= "C:\ Users \ stage \ Documents \ Aangepaste Office-sjablonen \ Projectonderdelen.xltm"。テンプレートのすべてのシートがコピーされます。 –

+0

@VincentGこれは私の最初の推測でしたが、うまくいかなかったのです。だから、私のコードの他の部分がこれに合っていないと思うのですが、何とか私のテンプレートを台無しにしました。ありがとう – Brendon

関連する問題