複数のbookから特定のセル(行)を削除する

このQ&Aのポイント
  • 複数のbookから特定のセル(行)を削除する方法について教えてください。
  • 社内販売の取りまとめをしており、誤送付したbookに余分な行が挿入されているため注文項目がずれてしまい正しい集計ができません。
  • 一度に複数のbookから特定の行を削除する方法を知りたいです。
回答を見る
  • ベストアンサー

複数のbookから特定のセル(行)を削除する

社内販売の取りまとめをしています。 全社員に同じ注文書を送付し注文を受け付けました。 ところが送付した注文書が間違っており、正しいファイルにはないはずの行が挿入されていることがわかりました。 集計は別のbookにマクロが組んであり、それを利用します。 集計用book中のボタン押下で注文書から必要項目を抽出してくれる仕組みになっています。 誤送付したbook(注文書)に余分な行が挿入されているため注文項目がずれてしまい正しい集計ができません。 注文書は200枚以上あり、一つ一つのbookを開いて不要な行を削除していくのは気の遠くなるような作業になってしまいます。 一度に複数のbookから特定の行を削除するような方法はあるでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

「複数のブックを纏めて行削除」なんてことは,マクロを使っても出来ません。 折角マクロを使ってるのですから,マクロを使って1つ1つブックを開いては修正していく作業を自動でやらせるだけですね。 #もちろんその過程の中で,たとえば「実施済みのブックを誤ってマクロを走らせてしまい,ホントは要り用な範囲も削ってしまった」みたいな間違いも起こり得るワケですが。 sub macro1()  dim myPath as string  dim myFile as string  mypath = "c:\test\" ’注1  mkdir mypath & "DONE\"  myfile = dir(mypath & "*.xls*") ’注2  do until myfile = ""   workbooks.open filename:=mypath & myfile   activeworkbook.worksheets(1).rows(1).delete shift:=xlshiftup ’注3   activeworkbook.saveas filename:=mypath & "DONE\" & myfile   activeworkbook.close false   myfile = dir()  loop end sub 「実際に動くマクロ」を誰か代わりに書いて教えてくれってご相談の場合,次のような「具体的な実際のエクセルの姿や状況」について情報提供しないとダメです 注1:具体的にブックが保存してあるフォルダのフルパス 注2:具体的なブック名のサンプル,ブック名のルール,正しい拡張子 注3:実際に処理したい具体的なシート名,または対象シートを特定できる情報,具体的に処理したいセル範囲

excelqanda
質問者

お礼

丁寧な注釈つきの回答、ありがとうございます。 質問する前にもう少し勉強が必要なようですね。 具体的なソースも示していただきありがとうございました。

その他の回答 (3)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>一度に複数のbookから特定の行を削除するような方法はあるでしょうか? 基本的にマクロを使用することになりますが、マクロ処理では元に戻すことができないので、十分な検証のもとで実行しないとデータを消失するなど重大なエラーが発生する可能性がありますので、初心者にはお勧めできません。 >集計用book中のボタン押下で注文書から必要項目を抽出してくれる仕組みになっています。 必要項目を抽出するマクロがあるなら、こちらのコード(対象データの行位置)を修正したほうが、リスクが少なくお勧めの対応です。

excelqanda
質問者

補足

>データを消失するなど重大なエラーが発生する可能性があり そうですか。 確かにデータ消失はリスクが高すぎますね・・・ >こちらのコード(対象データの行位置)を修正・・・ 私もそれをチラと考えてみたのですが、集計表は外部の会社に作っていただいたものでとても恐ろしくてさわれません。 代替え案考えていただきありがとうございました。

  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.2

それは大変ですね。 フォルダに入っているエクセルファイルに対して同一の行を削除するマクロをVBで組めばできますよ。 その程度のVBであれば30分もあれば作れると思いますけど。 ちなみに削除したいのは何シートの何番目の行でしょうか? それさえ分かれば作れます。 もちろん、ここではソースコードを教えることしかできないので、ご質問者様の方でソースコードをエクセルのVBAで登録してファイルを作ってもらう必要がありますけどね。

excelqanda
質問者

補足

回答ありがとうございます。 削除したいのは 1シート目の1行目、2行目です。 ソースコードを教えていただけるのでしょうか? 助けていただけると幸いです。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.1

一度に複数のbookから特定の行を削除するような方法は難しいので、マウス操作の記録・再生ソフトを使って、一度に複数のbookから特定の行を削除した新しいbookを自動的に作ることをお勧めします。

excelqanda
質問者

補足

マウスの操作・再生ソフト探してみたいと思います。 削除ができるということは操作によってはペーストなどもできるという事でしょうか。 ありがとうございました。

関連するQ&A

  • 複数のBookから決まったセルの値を別のBookに

    お世話になります。 EXCELで複数のBOOKから決められたセルにある値を抽出してひとつのBOOKに纏めたいのです。 BOOK1~50、 BOOKには31枚のSheetがあります。 その中のSeet31にSeet1~30のデーターを纏めてあります。 Seet31の A1~3 B1~2 C1~3 のデーターを抽出して 新しく作ったBook【集計】のSeet1にBook1~50から抽出した データーを縦に並べたいのです。 【 例 】   A1 A2 A3 B1 B2 C1 C2 C3 1  5  2  4  3  6  7  1  3 2  2  3  4  6  9  7  5  2 3  7  8  5  6  2  3  1  8 と、いった感じです。 なお、Book名は『漢字+数字』です。 宜しくお願いします。

  • 複数のExcelブックから特定シートのセル範囲抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル範囲を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 このサイトで殆どよく似た回答を読んだのですがうまくいきません。VBA初心者です。 よろしくお願いします。 【前提】 ・実行する端末のOSはWindows 10 ExcelはOffice365 ProPlus ・対象フォルダはネットワーク接続フォルダ  この中に、複数のExcelブック(xlsx、xlsm)があります。 ・抽出したい対象は、各ブック内の「台帳」シートの「A3:Cの最終行」で  複数のブックの中には「台帳」シートが含まれていないブックも混在しています。 【抽出一覧作成イメージ】 ・「集約.xlsm」ブックの「集計」シートの2行目から抽出した結果を一覧表示する。 ・「集約.xlsm」ブックにマクロは登録する ・表示はA列に抽出元ブック名(=ファイル名)、B列からD列に抽出元「A3:Cの最終行」セルの値。 ・「A3:Cの最終行」セルの値を「集約.xlsm」ブックの「集計」に貼り付ける際には「値で貼り付ける」が望ましい。

  • excelでマクロを使って複数のブックから特定の行をコピーし一つのブックにまとめたい

    複数ファイルの特定の行をコピーし、項目ごとに一つのブックにまとめたいのですが、どのようにすればいいのでしょうか? 他ブックからのコピーはマクロを使わずともできるものでしょうか?

  • 複数のエクセルブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\データ解析\データ」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内のシート(シート名はファイル名と同じ)の「BO6からBW16までの□の範囲」で統一されています。 【抽出一覧作成イメージ】 ・「集計.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元BO6セルの値。以降,C列・D列と 順に値を入れていきたい。 ・BO6~BW16までのセル値を「集計.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • 複数のエクセルブックを開かず特定シートのセル抽出

    他の方の質問を参考に自作しましたが動作に時間が掛かる為、教えて下さい。  PCはWin10、エクセル2016、ファイル形式はxlsm  該当フォルダはネットワーク上\\○○○○\Users\ この中に複数ブックが存在  抽出したいデータは全てのブックの「メニュー」というSheetのA100からAO100までを  「集計.xlsm]のSheet1の2行目から抽出結果をA2からAO2までを2行目、3行目とずらして値で貼り付けたい 作成したVBAを見て良い方法をご教授下さい。 Sub 集約() Dim myFolder As Variant Dim fso As Object Dim GetFolder As Object Dim Fol As Object Set fso = CreateObject("Scripting.FileSystemObject") With Application.FileDialog(msoFileDialogFolderPicker) If .Show <> 0 Then myFolder = .SelectedItems(1) End If End With With CreateObject("WScript.Shell") .CurrentDirectory = myFolder End With Set GetFolder = fso.GetFolder(myFolder) For Each Fol In GetFolder.SubFolders Debug.Print Fol.Name Next Set GetFolder = Nothing 'フォルダの場所を変数に入れる Dim Folder_path As String Folder_path = Range("a1").Value '集計先のシートを指定し、変数に入れる Dim w Set w = Worksheets("sheet1") '集計するブックを変数に入れる Dim Merge_book As String Merge_book = Dir(Folder_path & "\*.xlsm*") 'いったん数値をクリア w.Range("b" & Rows.Count).Clear '集計先のシートの1行からスタート Dim n n = 4 '指定したフォルダから、Excelファイルを探す Do Until Merge_book = "" Workbooks.Open FileName:=Folder_path & "\" & Merge_book '見つかったら、A列にファイル名、B列に集計値を入れる w.Range("a" & n).Value = Merge_book w.Range("b" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("a100").Value w.Range("c" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("b100").Value w.Range("d" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range("c100").Value    ・・・・・・・・・・・・・・・省略・・・・・・・・・・・・・                         ・ ("ao100").Value w.Range("ap" & n).Value = Workbooks(Merge_book).Worksheets("メニュー").Range '次の行へ n = n + 1 '集計するブックを閉じる Workbooks(Merge_book).Close '次のファイルを探しに行く Merge_book = Dir() Loop End Sub この方法は1つのフォルダ直下に全てのブックを入れないと動かないのでPCの容量に負担が掛かり画面もチラチラし、時間も掛かる為、もっと効率的な方法で作業を行いたいのです。 よろしくお願いいたします。

  • Excelの複数Bookでの転記と行移動処理

    Excel2003を使っています。 質問内容のシナリオは以下です。 1)Book1-Sheet1の行単位データをBook2-Sheet1に転記させる。 2)Book2-Sheet1ではデータの入っていない最終行に1)のデータが入る。 3)2)が終わると自動的に次の行に移動する 4)1)~3)を繰り返す(複数あるため) これの2)と3)のVBAをどちらのBookにどのように記載するのかがよくわかりません。 現在はBook1とBook2をどちらも開き、Book1でマクロをで転記しています。 Book2では転記される行を選択し、 次のデータのために手動で(転記された次の)1行を選択しております。

  • 同フォルダ内複数BOOKを一つのBOOKにまとめる

      『同じフォルダ内の複数BOOKのシートの一部をまとめて1つのBOOKに貼り付けたい』(ミント) 大変困っています!! すべて同じ構成の複数BOOKの最初のシート(Sheet1)の一部のセル範囲を新しい集計用のシートに貼り付けるVBAのコードを教えてください!!!!!! VBAを使用したいのですが、いろいろ調べてもたくさんコードがあって、どれを使えばいいかわからず、混乱状態になってしまっています。。。 詳細はこのような形です。 各BOOKの最初にSheet1があり、その構成はどのBOOKも同じです。 <たとえば・・。>【Book1】 A B C D 1 あ い う え→ラベル行2 お か き く3 け こ さ し【Book2】 A B C D 1 あ い う え→ラベル行2 す せ そ た3 ち つ て と これを【集計用シート】 A B C D 1 あ い う え2 お か き く3 け こ さ し4 す せ そ た5 ち つ て と このようにつなげていきたいのです。全BOOKが複数シートありますが、集計するのはSheet1だけでよいです。 できれば、1行目にあるラベル以外を順番に貼り付けられればと思います。要するに、上記の例でいくと、2行目から集計用シートに貼り付けられていくイメージです。なお、すべてのBOOKは一つのフォルダにまとめられています。 VBA初心者でこの情報だけで絞り込めるのかわからないのですが、他にも情報が必要であれば教えてください。。。 上記のことができるコードを記載頂けたらと思います!!宜しくお願いします!!! なお、Excelのバージョンは2007、OSはWindows7です

  • エクセルでの複数ブックの特定範囲を一覧化する

    エクセルでイベントの参加者を数か所から集め、集計を行っています。 今までは紙ベースで受け取り、エクセルへ手打ちをしていましたが、もう嫌です。 エクセルベースで送付してもらい、集計し、一覧化を行いたいです。       【ブックα】      |     【ブックβ】    A    B    C    |    A    B    C  1  年齢 性別  名前   | 1  年齢 性別  名前 2  ・    ・    ・    | 2  ・    ・    ・ 3  ・    ・    ・    | 3  ・    ・    ・ 4  ・    ・    ・    | 4  ・    ・    ・ 様式としてはとしては以上のような一覧で送られてきます。(だいぶ簡略化してますが) この複数ブックの申し込みを以下のような一覧に仕上げたいです。    A   B    C    D 1  α 年齢  性別  名前 2   ・   ・    ・     ・ 3  ・   ・    ・     ・ 4  ・   ・    ・     ・ 5  β  ・    ・     ・ 6  ・  ・    ・     ・ 7  ・  ・    ・     ・ ちなみに、ブックごとの参加者は不定です。なので範囲としては(A1:C100)を抽出するようになると思います。 マクロなるもので、複数ブックを一つのブックにまとめ、複数シートとすることはできましたが、その複数シートの該当範囲のみを転記し、一覧化する(A行にシート名を転記する)ことができません。 また、ただ単に当該範囲を転記するだけでは、空欄セルが多数転記されてしまいそうですが、記入されているセルのみを転記することが可能であればなおいいです。 わたしが「こうできたらいいのに」と思うことはできると思っています。 ただ、私にはその知識がありません。 なのでお力添えいただければ幸いです。 つたない説明で伝わりにくい点もあるかと思いますが、よろしくお願いいたします。

  • 複数のExcelブックから特定シートの特定セル抽出

    同一フォルダ内にある複数のExcelブックから特定シートの特定セル値を抽出して一覧表にまとめるExcel マクロ(VBA)を教えてください。 よく似ている質問、回答を読んだのですが、私のレベルではとても応用できず質問させていただきます。 全く同じものがあれば、そのアドレスを回答いただくだけでも助かります。 【前提】 ・実行する端末のOSはWindows XP(SP3)、Excelは2003 ・対象フォルダはネットワーク接続フォルダ「\\share\target」  この中に、複数のExcelブックがあります。 ・抽出したい対象は、各ブック内の「概要」シートの「C3」セルで統一されています。 【抽出一覧作成イメージ】 ・「集約.xls」ブックの「Sheet1」の2行目から抽出した結果を一覧表示する。 ・表示はA列に抽出元ブック名(=ファイル名)、B列に抽出元C3セルの値。 ・C3セル値を「集約.xls」ブックの「Sheet1」に貼り付ける際には「値で貼り付ける」が望ましい。 というようなイメージです。 とても勝手なお願いではありますが、宜しくお願いいたします。

  • excel 複数ブック・シートからのデータ抽出

    下記画像の日報を集計したいのですが、ご教授お願いします。 『1月~12月』というブックの中に、『1日~31日』というシートを作成し日報管理を行っています。 すでに『1月~12月』というブックは作成されているので、そちらはいじらずに、その内容を「作業内容集計」という一つのブックに集計したいと思っております。 単価の列に金額が入っていた場合に、行全体を抽出し、一年分を一つのシートにまとめたいのですが可能でしょうか? おそらくマクロでないと無理だと思うのですが、関数でも、こんな方法があると教えていただける方がおられればうれしく思います。 excelは2003~2010という混在の環境ですが、とりあえずexcel2010で集計できれば良いと考えています。 よろしくお願いいたします。

専門家に質問してみよう