sheetaaa~(複数シート)~sheetZZZをすべて選んでこれらのシートのコピーを、他のブックに作成するというマクロを自動保存で作りました。出来上がったマクロをみるとコピーするシート名がひとつひとつマクロの中にかかれてしまいます。sheetaaaとsheetZZZはいつもコピーするので問題ないのですが、、間に入っているシートは数がどんどん増えていくので、マクロの中でおのおののシート名を指定してしまうのは困るのです。
マクロを実行した際に、sheetaaaとsheetZZZの間あるシートは無条件でコピーを作成するというマクロを作成したいのですが、どのように作ったらいいのかわかりません。
どなたかアドバイスいただけないでしょうか。
No.1
- 回答日時:
手元にExcel97しかないので97で確認しました。
Sheets.Copy before:=Workbooks("Book2").Sheets(1)
とすると、アクティブなブックの全てのシートが
Book2.xlsのSheet1の前にコピーされます。
Sheets(Array("aaa", "bbb", "zzz"))とせずに
単にSheetsと書けば、全てのシートが対象になると
思います。
この回答への補足
book1のすべてのsheetをコピーするのではなく、sheetaaa,sheetbbb~複数シート~sheetzzzという構成があってコピーしたいのは、bbb~zzzで、この間のシートが増えていくという構成です。aaaはコピーせずに残しておきます。うまく説明ができなくて申し訳ありません。もう一度よろしくお願いします。
補足日時:2002/07/22 13:08No.2ベストアンサー
- 回答日時:
aaaシートはコピーしない、となると、aaa以外を丹念に
コピーしていく方法もあるかと思いますが、面倒なので、
全部コピーした後でaaaだけ消すというのはどうでしょう。
Sheets.Copy before:=Workbooks("Book2").Sheets(1)
Workbooks("Book2").Sheets("aaa").Select
Application.DisplayAlerts = False
ActiveWindow.SelectedSheets.Delete
Application.DisplayAlerts = True
シートを消すときに「戻せませんよ」とメッセージが出るので、
それを避けるためにDisplayAlertsを使っています。
No.3
- 回答日時:
色々ご解答が出ています。
しかし●挿入(=Add)された順番で、(FromTo的に、)○○から××まで、続いた番号のシートを表現する表現法は存在しないというのが解答ではないですか。そう言うご質問ではないのですか。
その上で#3のご解答の「全てを指定できる」の「Sheets」が次に近いと思う。
●ShiftキーやCtrlキーを押して、シートTABをクリックすると、マクロ記録では、「Array」に表現され、これは連続でなく、個別に指定されたときに対応する表現方法である。
Sheets(Array("Sheet1", "Sheet2", "Sheet3")).Select
ActiveWindow.SelectedSheets.Delete
●Sheets(”Sheet1:Sheet5”).Selectを認めてくれて
Sheetの1~5を指定できれば良いと思うが、不可のようですね。
●今回の質問は、上記の最後のシート(Sheet5に
当たる)も、毎回動くので、表現上決められないケースでしょうか。Sheet1、Sheet2を除く全てとかになると、指定が難しい(不可能?)でしょう。
No.4
- 回答日時:
マクロ記録で作成される、"Sheetaaa","Sheetbbb",・・・,"Sheetzzz" の文字列を自動的に作成しそのシートをコピーします。
操作を想像すると、"Sheetaaa"タブを選択し、最後のほうにある"Sheetzzz"タブを選択して、その間にある
"Sheetbbb"~"Sheetzzz" をコピー対象にするのでしょうか。
下のコードはシートタブ"Sheetaaa"と"Sheetzzz"で挟まれたシート("Sheetaaa"は除く)をコピーしています。
"Sheetbbb"から"Sheetzzz"迄を適当に選択し、選択したシートのみコピーするなら少しコードが変わります。
'現ブックをBook2にコピーする
Sub SheetsCopy()
'ワークシートのインデックスを調べる
Dim w As Integer 'ワークシートのインデックスカウンタ
Dim startIdx As Integer 'コピーする最初のインデックス
Dim endIdx As Integer 'コピーする最後のインデックス
startIdx = Worksheets("Sheetaaa").Index + 1
endIdx = Worksheets("Sheetzzz").Index
'配列の格納されたバリアント型の値を作る(Array関数)
Dim myArray As Variant 'worksheet名の配列
Dim cot As Integer 'カウンタ
myArray = Array(Worksheets(startIdx).Name)
For w = startIdx + 1 To endIdx
cot = UBound(myArray) + 1
ReDim Preserve myArray(cot)
myArray(cot) = Worksheets(w).Name
Next
'コピー実行(コピー先はBook2)
Sheets(myArray).Copy Before:=Workbooks("Book2").Sheets(1)
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの質問です。 F列からL...
-
作成した数式を値として表示し...
-
エクセルの文字が途中から消える
-
条件付き書式設定で罫線を引き...
-
Excel関数について教えてくださ...
-
Excelの警告について
-
Excel関数について教えてくださ...
-
ワークシートに出現したこの画...
-
エクセルのセル内に分数などの...
-
タイムスタンプとテキストから...
-
EXCELの散布図で日付が1900年に...
-
エクセルでファイルの最終更新...
-
シートの情報を別のシートへま...
-
マクロの処理が遅くなった
-
エクセルの数式バーのフォント...
-
エクセルの「条件付き書式」を...
-
エクセル日付 文字列の関数がエ...
-
Excelでの文字色
-
Excelの数字の前に入っている空...
-
Excelについて教えてください。...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報