いつもお世話になります。
皆様にご教授いただき、ほぼ理想に近づいてきました。
今回ご教授いただきたいのは、作業中のブックの末尾に他のブックから4シートまとめてコピーして張り付けたいのです。現在は手作業で行っています。
作業中のブックは20シート位でその時によってシート数は変化します。sheet1のシート名は"シート一覧"、sheet2~sheet20位のシート名は”名簿””№”~"№(18)"位で一番末尾のシート名は"Sheet3"となっています。コピー元のブック名は”集計表”で4シートあり左から”集計表”、”表”、”表②”、”グラフ”のシート名です。”集計表”シートにデータが入るとその右の3シートのグラフや表が出来上がるようになっています。1シートずつ移動させると表やグラフがエラー表示となってしまうため、4シートまとめて移動したいのです。
いろいろやってみたのですが、うまくいきません。
上記の作業中のブックももともとはすべて1シートからなるブックを【エクセルアテンダント】というソフトで1ブックにまとめたものですが、ソフトを使用せず、VBAで上記作業とあわせてまとめることが出来るのであれば、その方がベストです。まとめることが出来るのであれば、”名簿”シートが先頭で”№”~”№()”の後ろに上記4シートにしたいのですが。まとめる前のブック名は”名簿”ブックの”名簿”シートと”診断書01”~”診断書18”(その時によって数は変化します)という名前のブックで1シートで出来ています。シート名はsすべて”№”です。この数あるブックをソフトでまとめると一番前に”シート一覧”というシートが、一番後ろに”Sheet3”というシートがついた、任意の名前のブックが出来上がるのです。ソフトを立ち上げたり移動したりと手間がかかることと、一度ファイル形式をxlsxからxlsに変換しないと1ブックにまとめることが出来ないのことがネックとなっています。
すべてデスクトップ上にありますが、同じフォルダにまとめることは可能です。
あわせて、ご教授いただければ、非常に助かります。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
ANo2です
>(インデックスが有効範囲にありません)
このエラーは、ブック名やシート名が見つからない時に出ます。
具体的には、
Workbooks("コピー元.xlsx")や
Worksheets(Array("SheetA", "SheetB", "SheetC")が見つからない時です。
提示しましたコードは、単純にシートをコピーするだけのものですので、両方のブック(コピー元、コピー先)が開いた状態であることが前提です。
ブックが閉じた状態で実行した場合も、該当するブックが見当たらないので、上記のエラーになります。
ブックが閉じた状態から実行するには、その前にブックを開く処理が必要になります。
fujillin様
具体的な指摘ありがとうございます。
再度確認したところ、シート名が間違っていました。すみません。
シート名を変更し、実行したら問題なく実行できました。
ブックを開く処理も追加したところ、閉じている状態でも実行できました。
後はブックを閉じる処理を追加してみます。
ありがとうございました。
No.2
- 回答日時:
ANo1です。
>sub () ・・・end subをつければよいのでしょうか?
とりあえずは、それでも動作するはずです。
再確認してみましたが、私の環境では『うまくいきます』ので『うまくいきませんでした。
』という情報からだけでは何ともわかりません。
fujillin様
さっそく回答いただき、ありがとうございます。
デスクトップ上にコピー元という名前のブックを作成(ファイル形式xlsxの為、コピー元ファイル形式だけxlsxに変更しました。)し、Sheet1,Shee2,Sheet3の3シートを確認し、他のブックに下記のコードを入れ実行すると実行時エラー9(インデックスが有効範囲にありません)と出てしまい、デバックで確認するとSet shs=の行が黄表示になります。
Sub テスト()
Set shs = Workbooks("コピー元.xlsx").Worksheets(Array("SheetA", "SheetB", "SheetC"))
Set ds = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
shs.Copy after:=ds
End Sub
何処かやり方がおかしいと思うのですが、わかりません。
ご教授お願いいたします。
No.1
- 回答日時:
こんにちは
ご質問文を追いかけて読む気になれないので、斜め読みで、きちんと理解できていませんが・・・
>一度ファイル形式をxlsxからxlsに変換しないと1ブックにまとめる
>ことが出来ないのことがネックとなっています。
頻度やその他の状況にもよりますが、これが本質的なネックであるなら、すべてのファイルをxls形式にしてしまうという手段もあるのではないでしょうか?
まぁ、どちらかと言えば逆で、xlsxに統一する方が良さそうには思いますが。
>1シートずつ移動させると表やグラフがエラー表示となってしまうため~~
1シートずつコピーしても関数等の参照先が「元ブック」になるだけで、通常はエラー表示になることはないと思います。
INDIRECT関数などのように、文字列で参照を指定しているような部分に関しては、エクセルが自動変換してくれませんので、エラーの原因となる可能性はあります。
参照変換ができないような関数式が原因であるなら、VBAで処理しても同じことが起こるはずです。
(実際の状況が不明なので、何が原因かもわかりませんが…)
>他のブックから4シートまとめてコピーして張り付けたいのです。
?現在は手作業で行っています。
手作業でも、複数シートをまとめてコピーすることは可能です。
その操作を『マクロの記録』で記録すれば、基本的なコードは得られると思います。
(一般化しないと使えない可能性は高いですが、方法はわかるはずです)
とりあえず、
「コピー元」ブックのSheetA、SheetB、SheetCをマクロのあるブック(=ThisWorkbook)の末尾にコピーするマクロの一例を、以下に記しておきますのでご参考まで
Set shs = Workbooks("コピー元.xls").Worksheets(Array("SheetA", "SheetB", "SheetC"))
Set ds = ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
shs.Copy after:=ds
fujillin様 こんにちは
回答していただき、ありがとうございます。
休みでお礼が遅くなり、すみません。
>頻度やその他の状況にもよりますが、これが本質的なネックであるなら、すべてのファイルをxls形式にしてしまうという>手段もあるのではないでしょうか?
>まぁ、どちらかと言えば逆で、xlsxに統一する方が良さそうには思いますが。
あるソフトで出来上がるファイルがxlsxなんです。
>1シートずつコピーしても関数等の参照先が「元ブック」になるだけで、通常はエラー表示になることはないと思います。
すみません。やり方が間違っていました。
>その操作を『マクロの記録』で記録すれば、基本的なコードは得られると思います。
(一般化しないと使えない可能性は高いですが、方法はわかるはずです)
実際に記録させ、実行をやってみたのですが、実行されませんでした。
閉じてるブックを開くところがマクロには記録されてない部分と、シートの末尾にコピーするとしたのですがafter sheet(21)と記録され、実際は枚数が都度変化するのでこの部分も問題が出るのではと思っています。
教えていただいたコードはあとsub () ・・・end subをつければよいのでしょうか?(初歩的な質問ですみません)
コピー元のところにコピー元ブックの名前を入れ、Sheet1~Sheet3のところにシート名を入れてみたのですがうまくいきませんでした。
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで指定範囲のデータ...
-
Excelの警告について
-
VBAマクロで作成した新規ブック...
-
別ブックから入力規則でリスト...
-
複数エクセルから特定シートの...
-
Excel VBAでブックを閉じる時、...
-
エクセルにおける,「ブック」...
-
フォルダ内の複数ファイルから...
-
指定ファィルの指定シートをシ...
-
別フォルダにある同じ名前のブ...
-
EXCEL VBA におけるブック終了...
-
エクセルで「ディスクがいっぱ...
-
フォルダ内の複数ブック・シー...
-
ファイルをまとめたい
-
VBAでのブック・シートの保護・...
-
外部ブック参照が#REF!になって...
-
複数のEXCELファイルより一部の...
-
VBAでブックを非表示で開いて処...
-
エクセル:標準モジュールを一...
-
EXCELの複数ファイルを1つにま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルを共有するとPCによっ...
-
Excelの警告について
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルにおける,「ブック」...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelで複数ブックの同一セルに...
-
【マクロ】【VBA】別ブックへの...
-
Excel(2010)のフィルターが保...
-
Excelでブックの共有を掛けると...
-
エクセルで50行ごとに区切った...
-
エクセルでウィンドウの枠固定...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
VBAでブック保護非保護を判定す...
-
【マクロ】for nest について ...
-
エクセルファイルを開かずにpdf...
-
フォルダ内の複数ファイルから...
おすすめ情報