タイトル : Re: SheetやBookのコピー後の処理 投稿日 : 2009/07/01(Wed) 14:52 投稿者 : 魔界の仮面弁士
> (コピーして出来た新sheetが必ずActiveではないかも > しれないと懸念しています。) そうですね。Active とは限りません。 この場合は、 > xlBook.Worksheets("原紙").Copy after:=xlBook.Worksheets("原紙") > xlBook.ActiveSheet.Name = TgtShtName の部分を、位置指定にして xlBook.Worksheets("原紙").Copy After:=xlSheet xlBook.Sheets(xlSheet.Index + 1).Name = "新しい名前" という感じにしてみては如何でしょう。After なら +1、Before 指定ならば -1 です。 今回の場合、xlSheet は xlBook.Worksheets("原紙") 自身でも良いでしょう。 なお Move や Copy 動作では、インデックスのつけ直しが行われますので、 i = xlSheet.Index xlBook.Worksheets("原紙").Copy After:=xlSheet xlBook.Sheets(i + 1).Name = "新しい名前" のように、事前に Index を取得しておくのは避けるようにしてください。 > コピーして出来た新Sheetを確実に指定するにはどうすればいいので > しょうか? 少々手間ですが、こういうのは如何でしょう。 '1シートのみを持った新規ブックを用意 PreCount = xlApp.SheetsInNewWorkbook xlApp.SheetsInNewWorkbook = 1 Set xlNewBook = xlApp.Workbooks.Add() xlApp.SheetsInNewWorkbook = PreCount Set xlDummySheet = xlNewBook.Worksheets(1) xlBook.Worksheets(RetShtName).Copy Before:=xlDummySheet Set xlNewSheet = xlNewBook.Worksheets(1) xlDummySheet.Delete '最初のシートは不要なので削除 Set xlDummySheet = Nothing xlNewSheet.Name = "あたらしいなまえ" |