専門家に聞いた!繰り返す痔の原因は!? >>

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

何か良い方法はありますか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お世話になりました☆

お礼日時:2007/09/11 09:26

こんにちは、#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回の冒頭に書いてある、「変数、定数、演算子、プロシージャ、制御構文」という概念を理解すれば今回のプログラムを作成するのには十分です。

どうです?できそうですか?
    • good
    • 0

こんにちは。



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

では。

この回答への補足

回答ありがとうございます。
マクロはエクセルで実際に実行を記録して登録しているので詳しい操作が分かりません。
マクロ初心者なもので・・・・すみません。
できればもう少し詳しい方法を教えていただけますでしょうか。

また、ループはやはりそのコード数分(750以上)をして、各コードを入力する必要があるのでしょうか?


よろしくお願いします。

補足日時:2007/08/27 17:29
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング