• ベストアンサー

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

一度質問した件ですが、マクロを使って処理することにしました。 オートフィルタ機能を使ってデータを抽出し、シートをコピーで新規作成し、デスクトップに名前をつけて保存します。 しかし、抽出するデータのコードが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以上)をして、各コードを入力する必要があるのでしょうか? よろしくお願いします。