• ベストアンサー

excel vba シートがなければコピーしたい

excel vba で教えてください sheet名0を雛形に、使用者が1 2 3のsheet名でコピーして利用できるようにしたい。1はあるのでコピーを作らない。2はないのでsheet名0をコピーして作るといったように現在sheet2があるや否やで作成するや否やを判断してsheet copyをしたい。 すべてのsheet を名前をしらべつつ判断したいのです 教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Sheet5,Sheet6というシートが無ければ、Sheet1をコピーしてそれらを 作る。 Sub test02() sn = Array("Sheet5", "Sheet6") On Error GoTo err1 For i = 0 To UBound(sn) Worksheets(sn(i)).Activate MsgBox sn(i) & "がありません.作成します" Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = sn(i) Next i Exit Sub err1: MsgBox err & " " & Error(err) Resume Next End Sub Sheet5,Sheet6は当初にないという前提です。 --- もしあればコピーするのを飛ばすなら Sub test02() sn = Array("Sheet5", "Sheet6") On Error GoTo err1 For i = 0 To UBound(sn) Worksheets(sn(i)).Activate MsgBox sn(i) & "はあります" GoTo nxt1 p1: MsgBox sn(i) & "がありません.作成します" Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = sn(i) nxt1: Next i Exit Sub err1: MsgBox err & " " & Error(err) GoTo p1 End Sub

yamutya
質問者

お礼

いつもimogasiさんありがとうございます。 参考にしてなんとかできそうです。 ありがとうございました。

その他の回答 (2)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.2

質問の意味が解りません。 Sheet名0とは「Sheet0」なのか「0」なのか? Sheet2があったら「2」を作らない? マクロを実行したらシート名「Sheet0」のコピーを連番で追加したいって事ですか? 例えば、 Sub Test()   Worksheets("Sheet0").Copy after:=Worksheets(Worksheets.Count)   i = 1 On Error GoTo ER:   ActiveSheet.Name = "Sheet" & i   Exit Sub ER:   i = i + 1: Resume End Sub

yamutya
質問者

お礼

sheet2 ではなく sheet名2 でした。 連番ではなく ない 名前のsheetだけ 作成するという意味です。

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

シート名を 変数Snameに入れる VBAです Sub aaa()   Dim sname() As String   ReDim sname(Sheets.Count)   For ii = 1 To Sheets.Count     sname(ii) = Sheets(ii).Name   Next End Sub

yamutya
質問者

お礼

早速ありがとうございます。 そうですね。 ここの部分を 参考にしてなんとかできそうです。 ありがとうございました

関連するQ&A

  • Excelのシートのコピー

    0.前準備としてExcelで帳票の雛型を作成しておく。 1.VBよりExcelを起動し、雛型のsheetをcopyする 2.copyしたシートの名前を変更する 上記の作業をloopで回してやりたいのですがどのようにしたら良いのでしょうか?  ご教授お願いします。

  • ExcelのVBAでシートのコピー

    Excel2000 Win2000 複数(最低5)のシートが存在するExcelのBookでExcelのVBAを使用して strSheetName="XXX1" intSheetNo = 1 Sheets(strSheetName).Copy after:=Sheets(intSheetNo) とシートのコピーをしています。 この時コピーされたシートのインデックスが2にならないんですが、何故なんでしょ? やりたい事はコピーしたシートの名前をExcelが勝手につけた名前から変更したいんです。 コピーされたシートのインデックスが2になると思っていたので上手く行きません。 Sheets(intSheetNo + 1).Name = "XXX1-1"

  • VBA シート操作

    エクセル2002使ってます。 VBAにて雛型のシートを27枚コピーし、集計用のシートに入力されている名簿の名前の通りにシート名を変更したいと思い、式を組みました。 しかし、雛型のコピーまではできましたが、シート名を上手く変更できません。 シート名を変更したいシートは雛型(2)~雛型(28)の名前で、ブックの一番左から並んでます。 これをシート名変更するにはどうすればいいでしょうか?

  • エクセルVBAシートの複製と、コピーに関して

    以下のようなVBAを使用したいと思っています。 回答.xlsというエクセルファイルに、 回答者233名分の回答が一名一列に並んでいます。 この回答を、一名ずつ違うシートで分析したいと思っています。 その際、下記動作をVBAで行ないたいのですが、うまくいきません。 行ないたい動作は2列目から234列目までの各列に対して、 1,【分析】という名前のシートを複製し、一名一列(A列-AS列)の値を各1列目にコピー 2,コピーしたシートの名前を【分析-x】x=A列目の値とする 以上です。 お忙しいところ大変恐縮ではございますが、ご教授頂けると幸いでございます。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • EXCEL VBA ワークシートのコピーについて

    seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元  MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに          ワークシート名 ワークシート1 処理1ワークシート  ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。

  • エクセルVBAのコピーについて

    初心者です。 表を別のシートにコピーしたいのですが、列と行の幅がコピーされません。どうすれば列と行のコピーができるのでしょうか。 pastespecial で引数を指定するのでしょうが、formats ではないでしょう? copy destination:= で別のシートにコピーをしても罫線の行と列の幅が元の幅と異なってしまいます。教えて! エクセルで形式を選択してコピーで、すべてをコピー、でも同じ現象が起きます。列をコピーしてから、すべてをコピーするとうまく行くのですが、VBAではどう書けばいいのでしょうか。

  • エクセルVBAでファイル・シート名を指定して、現在のブックのシートにコピーしたい

    エクセルVBA独学中の超初心者です。 VBAを利用して以下のことがしたいのですが、わかりません。 助けて下さい。よろしくお願いいたします。 1. ファイルを選択する。 2. 1で選択したファイルから、シート名を選択する 3. 2で選択したシートを現在のブックのSheet1にコピーする

  • エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほう

    エクセルVBAで、シートをコピーした際、コピーされた新しいシートのほうを指定する言葉を知りたい。 コマンドボタンにて、(1)内訳用シートをコピーで増やす。(2)新しいシートの番号を連番になるよう1増やす。(3)新しいシートのほうは入力しやすいよう、入力欄を消去する。シート名も1.2.3...とふえていくようにしたい。 新しくコピーされたほうのシートを指定したい場合はどのようなVBA用語になりますか? いまは、元のシート指定方法しかわからないため、元シートの前にコピー作成し、元シートのNoを1増やし、データ消去で対応していますが、これだと、シート名に表示される内訳(1)(2)・・という番号になるので、できれば、コピーしたほうのシートを指定して、Noを1増やし、データ消去できれば解決するとおもうので。。いま、使ってるVBAはこんな式です。 ちなみにK6はシートNo、("B10:H30")("J10:K30")は入力欄です。 Private Sub CommandButton1_Click() ActiveSheet.Copy Before:=ActiveSheet Range("K6").Value = Range("K6").Value + 1 Range("B10:H30").ClearContents Range("J10:K30").ClearContents ActiveSheet.Select ActiveSheet.Name = Range("K6").Value End Sub

  • マクロでエクセルシートのコピー

    マクロでシート1を最後尾に名前をつけてコピーしたいと思ってます。 つけたい名前は、シート2のあるセルにかいてあります。 私は下記のように書いたのですが、エラーになってしまいます。 Worksheets("Sheet2").Select newsheet = Cells(1, 1) Sheets("Sheet1").Select Sheets("Sheet1").Copy After:=Sheets(newsheet) どのようにすればシートをシート名をつけてコピーできますか? 教えてください。 エクセル97です。

専門家に質問してみよう