• 締切済み

シートの部分部分を切り出しで別ファイルにする方法

EXCEL2010 シートの部分部分を切り出しで別ファイルにする方法をVBAで教えてください。 A.xlsmというファイルがあります。 これには、複数シート(aシート,bシート,cシート,dシート,eシート)が存在します。 aシートは、複数行のAセルに見出しがついています。 1行目A1FL1 18行目A1RL1 36行目A1FL2 53行目A1RL2 71行目A1FL3 88行目A1RL3 106行目A1FL4 123行目A1RL4 141行目A1FL5 158行目A1RL5 最終行は177行 という感じです。 作成したいファイルはaシートの一部とd,eを1つのファイルとし、 A1FL1.xlsx A1RL1.xlsx A1FL2.xlsx A1RL2.xlsx A1FL3.xlsx A1RL3.xlsx A1FL4.xlsx A1RL4.xlsx A1FL5.xlsx A1RL5.xlsx の10のファイルを作成したいのです。 A1FL1は1行~17行まで A1RL1は18行~35行まで A1FL2は36行~52行まで … A1RL5は158行~177行まで がファイル化する範囲です。 下記は、WEBで調べた内容と学習マクロで作成したマクロです。 行の追加削除が発生すると、削除する範囲がずれてしまうので、 見出しを元に必要な範囲だけでファイル化するVBAをベタで教えていただきたく。 Sub FILE() Const path As String = "C:¥work" '¥まで記述 Dim bk As Workbook Set bk = ActiveWorkbook ChDir bk.path ' ★ 保存先を bk と同じパスへ Dim st As Worksheet '1 A1FL1 bk.Sheets(Array("a", "d", "e")).Copy Rows("18:177").Select Selection.Delete Shift:=xlUp 'リンクの内容を値で固定 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.SaveCopyAs "A1FL1.xlsx" '18 A1RL1 bk.Sheets(Array("a", "d", "e")).Copy Rows("36:177").Select Selection.Delete Shift:=xlUp Rows("1:17").Select Selection.Delete Shift:=xlUp 'リンクの内容を値で固定 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.SaveCopyAs "A1RL1.xlsx" '36 A1FL2 bk.Sheets(Array("a", "d", "e")).Copy Rows("53:177").Select Selection.Delete Shift:=xlUp Rows("1:35").Select Selection.Delete Shift:=xlUp 'リンクの内容を値で固定 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.SaveCopyAs "A1FL2.xlsx" '53 A1RL2 bk.Sheets(Array("a", "d", "e")).Copy Rows("71:177").Select Selection.Delete Shift:=xlUp Rows("1:52").Select Selection.Delete Shift:=xlUp 'リンクの内容を値で固定 Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWorkbook.SaveCopyAs "A1RL2.xlsx" …(省略A1FL3.xlsx,A1RL3.xlsx,A1FL4.xlsx,A1RL4.xlsx,A1FL5.xlsx,A1RL5.xlsx) って感じです。

みんなの回答

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

違いますよ For Eachで ワークシートを扱う 例ですよ ループ内を変えれば 其のまま使えますよ VBAを扱うなら 転用力、応用力、 此、大切ですよ

3620313
質問者

お礼

何度も回答いただきありがとうございます。

3620313
質問者

補足

For eachでどの様な構成になるのか、具体例が分かりません。 私は、マクロ初心者です。 転用力、応用力が重要なのは分かります。 やりたい内容の一例だけでもあげていただいて、 他の内容はご自分で、というのが転用、応用の内容ではないでしょうか? このまま補足をあげても、質問と回答がかみあっておらず、 進展がなさそうなので質問クローズさせていただきます。 別な質問内容で本内容は解決できたのでそちらを参照いただきたく。 ”excelでの対象範囲行削除”

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.2

ご用命 有り難うございます http://www.relief.jp/itnote/archives/018074.php http://officetanaka.net/excel/vba/file/file04.htm 此では如何でしょうか?

3620313
質問者

補足

内容確認させていただきました。 照会頂いたのは、両者共にファイルの保存方法に関するマクロ事例と思われます。 私が知りたいのは下記なのです。 ------------------------------------------------------------ 行の追加削除が発生すると、削除する範囲がずれてしまうので、 見出しを元に必要な範囲だけでファイル化するVBA ------------------------------------------------------------

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.1

やり方が解らなくなった時は 抑のExcelに聞く すると、宜しかろう マクロの記録で 以下の事を記録してください 記録開始 シートタブを選択 タブ上で右クリック 移動とコピーを選択 コピーを選択するボタンをチェック 移動先を新規ブックに設定 実行 元ブックを選択 記録終了 記録内容を編集し 保存までさせた後 For  Each 文で回せば 如何でしょうか?

3620313
質問者

お礼

回答ありがとうございます。

3620313
質問者

補足

For Eachの具体的な使い方を知りたく。 私が記載したマクロは、ほとんどが学習マクロの内容です。 この内容だと、切り取るのが固定の範囲になってしまいます。 なので、切り取る範囲が可変の場合についてのマクロを教えていただきたいと思って 投稿させていただいています。