• ベストアンサー

マクロの莫大な数の登録について

一度質問した件ですが、マクロを使って処理することにしました。 オートフィルタ機能を使ってデータを抽出し、シートをコピーで新規作成し、デスクトップに名前をつけて保存します。 しかし、抽出するデータのコードが750個以上あり、それぞれについてマクロを設定するという作業が非常に大変です。 このように、莫大な数のマクロ(抽出する項目が違うだけで、行う作業は同じ)を作成することはできますでしょうか。 コードは750個ありますが、ファイルごとに出てくるコードは違うのでひとつのファイルでの使用コードは実質10個程度です。 何か良い方法はありますか? よろしくお願いします。

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

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

シート名やセルアドレス(A1とか)を含めてデータの構造を記載するとか、マクロのコードを載せるなどされた方が、質問が伝わりやすいと思います。 質問を理解出来てるか解りませんけど、、、 対象ブックには Sheet1 に A1から始まり、1行目はタイトルの表があるとします。 下記はその表を全面にした状態で実行すると、A列に含まれる値でオートフィルタを掛けて別ブックに抽出し、対象ブックと同じパスに抽出した条件名でそのブックを保存します。  # 対象ブックのパスを取得して処理しているため、対象ブックは最低1度は保存されている必要があります。 試す場合はテスト環境で。 Sub Test() Dim wb As Workbook, tws As Worksheet, r As Range Dim myList As New Collection, fPath As String On Error Resume Next fPath = ActiveWorkbook.Path & "\" Set tws = ActiveSheet With tws   For Each r In .Range(.Range("A2"), .Range("A65536").End(xlUp))     myList.Add r.Value, CStr(r.Value)   Next r      .Range("A1").AutoFilter   If Not .AutoFilterMode Then .Range("A1").AutoFilter      For i = 1 To myList.Count     Set wb = Workbooks.Add(xlWBATWorksheet)     .Range("A1").AutoFilter field:=1, Criteria1:=myList(i)     .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _            Destination:=wb.Worksheets(1).Range("A1")     wb.SaveAs Filename:=fPath & myList(i) & ".xls"   Next i      .Range("A1").AutoFilter End With Set myList = Nothing End Sub

yurizm
質問者

お礼

どうもありがとうございました。 簡単なマクロとフィルタ機能で行うことにしました。 お世話になりました☆

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.2

こんにちは、#1です。  >マクロはエクセルで実際に実行を記録して登録しているので詳しい操作が分かりません。  なるほど~、オートレコーディングで作成するのはとても便利ですが、その後、マクロの改良等、発展させようとすると、難しいですね。  まず、ひとつ知って欲しいのは、Excelのマクロというのはコマンドを羅列したものではなく、「Visual Basic for Aplication(VBA)」という立派なプログラム言語だということです。  プログラムを習得するには色々な概念を理解しなければなりません。  以下のサイトをご参照下さい。   http://www.seosoft.net/labo/vbprog/default.asp  この中の、第4回、第5回だけを読んでください。実はBasicというプログラム言語は色々な製品になっていて、このサイトでは「Visual Basic 6.0 Professional Edition」を中心に書かれています。そのため、VBAとはまったく操作方法が違うため、他の章を読んでもVBAのためには役に立ちません。  第4回の冒頭に書いてある、「変数、定数、演算子、プロシージャ、制御構文」という概念を理解すれば今回のプログラムを作成するのには十分です。 どうです?できそうですか?

全文を見る
すると、全ての回答が全文表示されます。
  • akina_line
  • ベストアンサー率34% (1124/3287)
回答No.1

こんにちは。  「オートフィルタ機能を使ってデータを抽出し、シートをコピーで新規作成し、デスクトップに名前をつけて保存する」というマクロは作成されたのですよね。  あとは、別のルーチンからコールしてコードやファイル名を渡し、必要な回数分ループすれば良いと思います。VBAで書かれているのですよね。その程度は簡単にできると思います。 では。

yurizm
質問者

補足

回答ありがとうございます。 マクロはエクセルで実際に実行を記録して登録しているので詳しい操作が分かりません。 マクロ初心者なもので・・・・すみません。 できればもう少し詳しい方法を教えていただけますでしょうか。 また、ループはやはりそのコード数分(750以上)をして、各コードを入力する必要があるのでしょうか? よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ★エクセルマクロコード教えていただけますでしょうか

    マクロのコードを組みたいと考えておりますが、 ほとんど初心者のため、お詳しい方の力を貸していただきたい次第でございます。 m(__)m ○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。  その後、そのシートを各フォルダに保存したい。 あるデスクトップ上にあるエクセルシート「管理DB」の「sheet1」にある管理データ A列(グループa~e)、B列(登録日)、C列(ステータス)によって構成されているシートで、 1.A列「グループ」「a」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダX本部」に保存。 1~5の一連の作業をグループがなくなるまで繰り返したいと考えています。 1.A列「グループ」「b」でオートフィルター 2.その中でB列、「登録日」が「2012年9月」以前のものをオートフィルター 3.その中で、さらに「ステータス」が「在庫中」のものをオートフィルター 4.3段階のオートフィルター後にできた結果を、別のエクセルシートとして作成。 5.そのエクセルシートをデスクトップにある「フォルダY本部」に保存。 ※一連の作業の中で、グループ名と、シートの保存先が変わる以外、この作業の繰り返し。 以上の作業を実行するマクロを組むことは可能でしょうか。 また、マクロのコードを教えていただけると幸いです。 マクロについてお詳しい方、何卒よろしくお願いいたします。

  • エクセルマクロの構文を短くしたい

    1週間分のデータの集計をします。 オートフィルターをかけ曜日で絞りかつ商品毎(15アイテム位)で絞り抽出されたデータを項目毎(4項目位)に別シートへはりつけます。 オートフィルター→月曜日抽出→A商品抽出→A商品のあ項目コピー→別シートの該当セルへペースト→A商品い項目コピー→別シートの該当セルへペースト・・・と続けA商品が終わったらオートフィルター→B商品抽出→B商品のあ項目コピー→・・・延々と15商品抽出・コピー・ペーストとつづけます。月曜日がおわれば次に火曜日抽出し同じ事をくりかえします。 何とか簡単な構文にならないでしょうか?

  • マクロでのデータ抽出

    毎月の売上データの一覧から必要なデータのみ抽出して、伝票を作成します。 伝票は明細単位で抽出します。 マクロを組もうとしているのですが、1、2行目のように1案件につき明細が2つある場合があるので、どのようなコードになるのかがわかりません。 コードの中で明細をカウントして、その分だけコピーするような手順になるのでしょうか? また伝票は「分類」ごとに作成します。 こちらは分類ごとにシートを作成し、フィルタにかけたデータをコピーしようと思っています。 マクロは初心者で説明不足な部分がありましたら申し訳ありません。 よろしくお願い致します。

  • エクセル・マクロ オートフィルタからコピー

    Excel2000使用中です。 縦にたくさん項目が並んでいる表にオートフィルタを行い特定の項目のみを抽出し、抽出した項目のみを他の表にコピペをするという作業をマクロで行ないたいです。 ただし抽出した項目数は50~75項目で日によって変わりますが、抽出先の表は75項目で、75に足りない部分は空白です(空白は必須です)。 始めはオートフィルタをかけた後で上から75行コピーして貼り付けをしてマクロ設定してみたのですが、うまくいきません。 このように日々変化する項目があってもマクロを設定する方法はありますか?

  • エクセル記録マクロの作成の方法

    エクセル記録マクロの作成の方法 あるネット上でマクロ作成方法では、 ブックのsheet(1)をオートフィルターを利用し、データを抽出した物だけを、シートを追加し張り付けるやり方を、コード上では Selection.CurrentRegion.Select(1) Selection.Copy Sheets.Add Selection.PasteSpecial Paste:=xlValues(2) と記入がありました。 私が自動記録をすると、sheet(1)をコピー時は(1)可視セルのコピーを選択し、貼り付けをするときに(2)値のみにしておこなうと、上記のようなコードで自動記録はおこなわれません。 上記のコードを自動記録操作で作成させるのには、どのような操作記録をおこなったか教えてください。 ((1)についてはアクティブセルのコピーのようだとは理解しました。なぜか理解はできません。)

  • エクセル フィルタで抽出したデータごとに別ファイルを作成したい(マクロ)

    エクセルのフィルタで抽出したデータをタイトル行ごとコピーし、別ファイルを作る、という作業が大量にあります。これをマクロ化したいのですが良い方法はありますか? 出来ればシートに抽出条件の名前を付けて、そのファイル名で保存、までできたらありがたいです。

  • オートフィルタで表示されるリスト全部をマクロで抽出したい

    マクロでオートフィルタで抽出する項目を idx = Split("A社,B社,C社,・・・・・", ",") として入力し、 .AutoFilter Field:=1, Criteria1:=str(idx) というように抽出し、新しいシートにコピーているのですが、 社名の追加や変更がよくあるので、 その場合、毎回マクロを訂正しなければなりません。 オートフィルタのドロップダウンリストに表示されるものを 1つずつ全て抽出して新しいシートにコピーする方法はないでしょうか? ご存知の方、どなたか教えてください。 よろしくお願いします。

  • エクセルのマクロのことです。

    いつも、お世話になっております。 エクセルでシート1にデータがあります。 シート2のA1に入力した文字を含む行をオートフィルタで抽出する。 これをマクロを使ってできるでしょうか? 宜しくお願いいたします。

  • エクセルで閉じるときのマクロ

    あるエクセルファイルがあり、 その一枚のシートにはオートフィルタ (A~Z列まで)を使用しています。 【質問1】 ファイルを保存して閉じる際、 オートフィルタで抽出したものを 「すべて」に戻す、 つまりなにも抽出されていない(=左端の行番号が黒字) に戻すマクロはどこにどのように書けばよいでしょうか? オートフィルタを戻すマクロは、 'オートフィルタのあるシートを選択 Sheets("買取リスト").Select 'T列のオートフィルタを「すべて」にする Selection.AutoFilter Field:=22 というところまでは理解できました。 【質問2】 上記のマクロを Sheets("顧客リスト") から、Sheets("商品リスト")へ移動した際、 ボタン等を使用せずに、 (ただ、下のタブをクリックするだけで) 実行させることは可能でしょうか? 可能であれば、どこにどのように記述すれば よいでしょうか??  よろしくお願いします。

  • 日付で抽出 VBA マクロ処理

    日付でその日から1ヶ月の間の購入した図書データを 抽出したいのですが、マクロ初心者なのでなにも分かりません;; オートフィルタではない方法でやらなければなりません;; 日付でデータを抽出するにはどの関数を使えばいいでしょうか。 また、その日から1ヶ月の間というとこに さらにわからなくなります;; また、抽出されたデータを違うシートへとコピー しなければなりません;; 詳しく教えていただけると幸いです;; よろしくお願いいたします;;

このQ&Aのポイント
  • FMVESPRIMOWE2D2電源がONしてもすぐFMVWD2E2で起動できない理由を教えてください。
  • 富士通FMVのFMVESPRIMOWE2D2電源がONしてもすぐFMVWD2E2で起動できません。何が原因で起こるのか詳しく教えてください。
  • FMVESPRIMOWE2D2の電源をONするとFMVWD2E2での起動ができなくなる現象について詳細を教えてください。
回答を見る

専門家に質問してみよう