- ベストアンサー
エクセル97でマクロを使って、シート間の編集作業をしたい。
エクセル97を使って、データの編集をしたいのですが、 オートフィルタで抽出したものを他のシートに貼りつけるマクロなんていうのは 出来ないのでしょうか? 一応試しにやってみたところ、 Sub ○○コピペ() ' ' ○○コピペ Macro ' マクロ記録日 : 2003/2/ ユーザー名 : ' ' Selection.AutoFilter Field:=3, Criteria1:="=**○○**", Operator:=xlAnd Range("A11:I3100").Select Selection.Copy Sheets("○○").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("E2").Select End Sub と、このようになりました。 これでは、当然使い物になりません(汗) アクセスのクエリをインポートしてきたものを、 それぞれのシートに振り分ける(12シート分)という作業です。 マクロにしたいのは、 オートフィルのオプションを使って抽出 コピー&指定のシートの指定のセル(E2)からペースト です。 最終的にボタンにしてツールバーに常駐させるのですが、ボタンはシート数と同じ12個 作るつもりです。 (もちろん1個ですめば尚理想的なのですが) 指導の程、宜しくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
office2000ですが、このようなサンプルが。 Dim w As Worksheet Dim filterArray() Dim currentFiltRange As String Sub ChangeFilters() Set w = Worksheets("Crew") With w.AutoFilter currentFiltRange = .Range.Address With .Filters ReDim filterArray(1 To .Count, 1 To 3) For f = 1 To .Count With .Item(f) If .On Then filterArray(f, 1) = .Criteria1 If .Operator Then filterArray(f, 2) = .Operator filterArray(f, 3) = .Criteria2 End If End If End With Next End With End With w.AutoFilterMode = False w.Range("A1").AutoFilter field:=1, Criteria1:="S" End Sub 97で、このオブジェクトが使えないなら他の方法を探すしかありませんが。 要素が12と決まってるなら先頭からスキャンして要素を判断し各シートに コピーするのが一番頭を使わないプログラムでしょう。 元データと12シートで合計13個の行カウンタをひたすらカウントアップ するだけのプログラムかと(笑)
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
●問題を読んで、(1)何故・どの点がマクロの記録が使えないのでしょうか(2)アクセスのクエリ機能を使えば 12区分できるはずなのに、エクセルに来てまたフィルタ (区分け)を掛けるのでしょうか。ただ12回インポート は馬鹿げているが、区別のためのコードをアクセス側でセットしてくれば、フィルタを使わず、コードで振り分けできます。 ●それと私の思いつきですが、リストボックスかコンボボックスを貼りつけ12アイテムを表示してシート名を選ばせ、そこへコピー先(納める)にしてはどうでしょうか。
補足
回答ありがとうございます。 質問に対する補足ですが。 (1)何故・どの点がマクロの記録が使えないのでしょうか 「今日」と「抽出するセル」が毎日変動する、という点でどのように 指示をかけたらいいのか困っています。 今日以前の日付の行を全て除きたいのです。 (2)アクセスのクエリ機能を使えば12区分できるはずなのに、 エクセルに来てまたフィルタ(区分け)を掛けるのでしょうか。 アクセスは、共有フォルダにあり、別の方が別の用途で使用している為 一切手をつけない為にも、エクセルに移行しています。 なので、全ての作業をエクセルに出力してから、ということになります。 同じアクセスの別ファイルで作業すればいいのに、という疑問は 私にもありますが・・・。 確かに、そうですよね。ちょっと意見してみます(汗)