• 締切済み

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

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

関連するQ&A

  • エクセルマクロで行を変えて100回デリート

    すみません。繰り返し165行下がってデリートしたいのですが・・・ どなたか詳しい方ご教授下さいませ。 ActiveWindow.SmallScroll Down:=174 Rows("183:198").Select Selection.Delete Shift:=xlUp ActiveWindow.SmallScroll Down:=171 Rows("348:363").Select ←165行下がりデリートを繰り返しデリートしたいです。 Selection.Delete Shift:=xlUp

  • for next教えて下さい(;_;)

    以下のように1行残して9行消してという操作を連続してやりたいのですがfor nextをどう使えばうまくいくのかわかりません。誰か教えて下さいお願いしますm(_ _)m Sub Macro1() ' ' Macro1 Macro ActiveWindow.SmallScroll Down:=5 Rows("10:18").Select Selection.Delete Shift:=xlUp Rows("11:19").Select Selection.Delete Shift:=xlUp End Sub

  • エクセルマクロ 繰り返して、別のシートへコピーしたい

    エクセルマクロ 繰り返して、別のシートへコピーしたい マクロ初心者のため、やり方が全くわかりません。 どなたか教えてください。 やりたいことは、 コピーするシートはあらかじめ作成しています。 簡素化の方法がわからないので、 とりあえず自分で作ってみたものが下にあるものです。 繰り返す方法がわからないので、 どなたか教えてください。 よろしくお願いします。 以下、作成したマクロです。 1行目から10行目まで繰り返したくて、 1行目から2行目のセルの移動の差は10行目までかわりません。 '1行目 Sheets("Sheet1").Select Range("B14:C14").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B15:C17").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B1").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False '2行目 Sheets("Sheet1").Select Range("B18:C18").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False Sheets("Sheet1").Select Range("B19:C21").Select Application.CutCopyMode = False Selection.Copy Sheets("Sheet2").Select Range("B2").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _ xlNone, SkipBlanks:=False, Transpose:=False

  • エクセルのマクロ:連続動作を空白行で終了する方法

    XP・Excel2003使用のマクロ素人です。 エクセルのマクロを使って以下のマクロを作りました。 1.Sheet1の1行目に入っているデータをSheet2にコピー 2.Sheet2をコピー 3.Sheet1の1行目を削除 4.上記1~3のマクロを実行するボタンをクリック 作業を繰り返し行いたかったので、(4)の「マクロボタンをクリック」という作業もマクロに組み込んでみたのですが、空白行でも延々に実行されてしまいます。 【Sheet1に入っているデータが空白になったら作業を止める】というマクロはどのように書けばいいのでしょうか? マクロの作り方が根本的に間違っていましたら、あわせてご指摘下さい。 宜しくお願い致します。 Range("A1").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste Sheets("Sheet2").Select Application.CutCopyMode = False Sheets("Sheet2").Copy After:=Sheets(3) Sheets("Sheet1").Select Rows("1:1").Select Selection.Delete Shift:=xlUp Range("A1").Select Sheets("Sheet1").Select Application.Run "Book1!Macro1"

  • excelのセル複数削除について

    2箇所の範囲を削除したいのですが、 Rows("188:247").Select Selection.Delete Shift:=xlUp Rows("311:373").Select Selection.Delete Shift:=xlUp とすると最初に削除されるとRowがずれてしまって、 次のRows("311:373").Selectがうまく削除できません。 2つを同時に削除することは可能でしょうか? 最大で3つまで削除を考えています。 どうぞよろしくお願い致します。 excel2000です。

  • エクセルマクロで行を変えて千回カット&ぺースト

    下記のコードでB,C,D・・・と行を1,000回変えて同じ作業をしたいのですが、どのようにしたらよいか分かりません。 どなたかお詳しい方アドバイスをお願いします。 Range("A18:A32").Select Selection.Cut Destination:=Range("B3:B17") ←B,C,D・・と変えてカットしたい。 Rows("18:32").Select Selection.Delete Shift:=xlUp Range("A18:A32").Select Selection.Cut Destination:=Range("C3:C17") Rows("18:32").Select Selection.Delete Shift:=xlUp Range("A18:A32").Select Selection.Cut Destination:=Range("D3:D17") Range("D3:D17").Select End Sub

  • 行を削除するマクロ

    以下のような、行を削除するマクロがあります。 Workbooks("123.csv").Activate Rows("5:10").Select Selection.Delete Shift:=xlUp しかし、123.csvを開いていない場合にはエラーが出てしまいます。 そこで、このようにしました。 On Error Resume Next Workbooks("123.csv").Activate Rows("5:10").Select Selection.Delete Shift:=xlUp しかし、エラーが出ない代わりに、アクティブなブックの行が削除されてしまいます。 123.csvが開かれている場合には、行を削除し、 開かれていない場合には、何もせずエラーも出さないようにするにはど のようにすればいいでしょうか。 よろしくお願いします。

  • 行を挿入するマクロがうまくいきません。

    Sheets("りんご").Select Rows("1:1").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown Application.CutCopyMode = False End Sub というマクロは、りんごのシートにある1行をコピーして、 みかんのシートの人と名前定義してある特定の行にコピーする マクロです。この次に下のマクロを実行すると Sheets("りんご").Select Rows("2:3").Select Selection.Copy Sheets("みかん").Select Range("人").Select Selection.Insert Shift:=xlDown それまでのものが残ってしまい、行がどんどん増えていってしまいます。 いずれかのマクロを実行すればリセットされて行が増えないように コピーするにはどうすればよいでしょうか・・?

  • 同じ場所にあるファイル全てに対してマクロをかけたい

    <やりたいこと> マクロと同じフォルダに入っている全ファイル(そのときによりファイル数が変わる)に対し、 1、2行を削除し、オートフィルタを消し、A2にある「No.1」を「No1」(ドットを消す)にし、 ファイルを上書き保存するようにしたいです。 <今の状態と質問> 全ファイル(例は4つ)を開いた状態で下記のマクロをかければ、 希望の処理ができます。 が、複数ファイルが有る場合、ファイル全てを開いて実行するのは難ありです。 事前にファイルを開く手間をかけずに、マクロで全て処理する方法は どうしたらいいのでしょうか。 過去検索で、Workbooks.Open Filename:= (ThisWorkbook.Path & "\*.xls")などを 見よう見真似で追加したりしてみたものの動きませんでした。 今の段階(4ファイル開いておけば実行可能)のマクロは下記の通りです。 Sub test() ' ' Keyboard Shortcut: Ctrl+q ' Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close Rows("1:2").Select Selection.Delete Shift:=xlUp Selection.AutoFilter Range("A1").Select ActiveCell.FormulaR1C1 = "No1" Range("A2").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • 行の削除

    excel VBA行の削除をしたい。 (質問) どこがまちがいでどう直せばよいか。教えてください。よろしくお願いします。 Rows("268:271").Select Selection.Delete Shift:=xlUp のイメージで Rows("last_depth+1:d").Select Selection.Delete Shift:=xlUp として実行したら型が一致しないエラー 記述で""を取り Rows(last_depth+1:d).Select Selection.Delete Shift:=xlUp としてもコンパイルエラーとなります。 なおlast_depth、dはともに  dim xx As long で定義の変数

専門家に質問してみよう