プロが教えるわが家の防犯対策術!

VBAのコードが分からず困っています。(全くの素人です・・)

やりたいことは
1.シート名一覧を用意してあるので、その一覧の名前を付けた新しいシートを作りたい
2.excelテンプレートを用意しており、新しいシートはテンプレートで開きたい
3.新しく作られるシートは右側に作りたい

右側にシートを作ることができなくて困っています。
お知恵をお借りできませんでしょうか
宜しくお願いします。



現在までできているコード
Sub シート作成()
For Each 対象セル In Selection
ActiveSheet.Name = 対象セル.Value
Sheets.Add Type:= _
"C:\Users\kc\AppData\Roaming\Microsoft\Templates\○○テンプレート.xltm"
Next 対象セル
End Sub

A 回答 (3件)

#2の回答者です。

私が、質問から想像した内容です。
私の知っていた頃のVBAとか変わってしまっているのかもしれません。

'//---
Sub Test1()
  Dim sel As Variant
  Dim mPath As String
  Dim newWb As Workbook
  Dim n As Variant 'シート名
  Set sel = Selection 'マウスでドラッグ
  If TypeName(sel) <> "Range" Then Exit Sub
  If sel.Cells.Count = 1 Then Exit Sub
  mPath = Application.TemplatesPath
  Set newWb = Workbooks.Open(mPath & "○○テンプレート.xltm")
  With newWb
    For Each n In sel
      If n <> "" Then
        .Worksheets.Add .Worksheets(.Worksheets.Count)
        .ActiveSheet.Name = n
      End If
    Next n
  End With
End Sub
    • good
    • 0

私は、さっぱり、VBAが分からなくなってきています。



https://msdn.microsoft.com/ja-jp/library/office/ …
ヘルプで、Sheets.Add メソッド のオプションのType をみると、
xlChart, xlDialogSheet, xlExcel4IntlMacroSheet, xlExcel4MacroSheet, xlWorksheet

5つタイプがあることになっていますが、
.... Type:=_
"C:\Users\kc\AppData\Roaming\Microsoft\Templates\○○テンプレート.xltm"

これって何でしょうか?新しいマクロのメソッドの仕様なのでしょうか?

>1.シート名一覧を用意してあるので、その一覧の名前を付けた新しいシートを作りたい

◯「セルの数だけ、新しいシートに、一覧の名前をつけたい。」ということですよね。

>2.excelテンプレートを用意しており、新しいシートはテンプレートで開きたい

テンプレートを加工するのでしょうか?
それとも、テンプレートで呼び出したブックに加工するのでしょうか。

テンプレートに加工するということは、それはマクロでする事自体は人の好き好きだと思います。たった、一回きりのマクロにはなるでしょうけれども。


要するに、私が思ったのは、
A,B,C,D と、ワン・セルずつに文字が書いてあって、

テンプレートで呼び出したファイルに、
新しいシートが4つで、名称が、A,B,C,D となるということです。
----------------------------------
Sheet1, Sheet2, Sheet3,[ A, B, C, D]

と、このように解釈したのですが、違いますか?

ふつうは、テンプレートをマクロで呼び出して、実体化したブックのシートの右に、新しいシートを加えていきながら、名称を変えていくなら分かります。そういうコードなら、私は、まだ書けると思います。

解決していたら、私に返事は不要です。もう、理解不能になってきていますから、無視しても構いません。
    • good
    • 0

全くの素人とは、ご謙遜ですね。

ほとんど正解ですよ。
シートを右側に追加するには、Afterオプションで指定します。
シート名を指定(変更)するのは、Addした後です。
それから、テンプレートの拡張子は、.xltx ですよね。

Sub シート作成()
Dim 対象セル As Range
For Each 対象セル In Selection
Sheets.Add After:=Sheets(Sheets.Count), _
Type:="C:\Users\kc\AppData\Roaming\Microsoft\Templates\○○テンプレート.xltx"
ActiveSheet.Name = 対象セル.Value
Next 対象セル
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!