重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

マクロのコードを組みたいと考えておりますが、
ほとんど初心者のため、お詳しい方の力を貸していただきたい次第でございます。
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本部」に保存。


※一連の作業の中で、グループ名と、シートの保存先が変わる以外、この作業の繰り返し。

以上の作業を実行するマクロを組むことは可能でしょうか。
また、マクロのコードを教えていただけると幸いです。

マクロについてお詳しい方、何卒よろしくお願いいたします。

A 回答 (4件)

>誰がログインしてもマクロを実行できるようにするため、



では、マクロを取り付けた「管理DB」ブックと「フォルダY本部」フォルダを一緒にして共有フォルダに置いておき、みんなが同じデータブック(とフォルダ)を共有して使えるようにしてください。
マクロを修正する必要はありません。




それとも?
マクロブックは一人一人別々に持ちたい、けどフォルダだけは共有したいのですか?
それなら、あなたのパソコンの「具体的な共有フォルダ(のフォルダY本部)」の場所(パス)を調べてマクロに書いてください。

パスとは:
"c:\test\フォルダY本部\"
のような書き振りの文字列


手順:
「フォルダY本部」フォルダの「中に入れてある」何かテキトーなファイルを1つ右クリックしてプロパティを表示する
「場所」欄にパスが書いてあるので、コピーしてマクロを修正する。


#参考
てきとーにブックをよういする
新しいマクロの記録を開始する
目的の共有フォルダ(に用意した「フォルダY本部」フォルダ)の中に、ブックを保存する
記録終了する
自動記録されたマクロを確認し、具体的なマクロの書き振り(実際のパス)を読み取って反映する
    • good
    • 0
この回答へのお礼

非常にわかりやすい説明でした。

誠にありがとうございました。

お礼日時:2012/10/07 23:45

>マクロのコードを教えていただけると幸いです。


今、ここに書かれている内容をすべてコード化したところで
その内容が理解できますか?
当然、これから業務・運用の変更も発生するでしょう
その時にあなたが責任を持って対応することになります。
自分で四苦八苦しながら作成することで身に付きますのでヒントのみに致します。


>○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。
> その後、そのシートを各フォルダに保存したい。
目的を実行するための手順ですが、色々な考え方・手法があります(これをアルゴリズムと呼びます)。
1、オートフィルターで絞り込んでいくのではなくフィルターオプションの機能を使って
  別シートに結果を抽出する手法をお勧めします。
  下に、VBAまでの作成手順が載ったサイトがありましたので、参考にして、とりあえず
  このサイトにあるボタンまで作成してみて下さい。
http://www.eurus.dti.ne.jp/yoneyama/Excel/filter …

2、本当に、デスクトップに沢山のフォルダを作って、沢山のファイルを保存することが必要ですか?
  最初は良くても年月とともに複雑になってしまい、失敗する事例の一つです。
  (特に初心者の方が陥ってしまう一例です)
  作成したフォルダ、ファイルをどのように活用しようとしているのかまで考えて次ステップの
  コードを考えてください。
  賢い方法は
  いつでも、だれでも、データがあるエクセルシートから簡単にデータが抽出して別ファイル化できる
  データはひとつで一元化することが基本です。

  
    • good
    • 0

淡々と、あなたのヤリタイことをその通りにマクロに書いていくだけです。

ヤリタイと考えた手順が正しければ、マクロも別にむずかしいことなく書けるようになります。
もし教わったマクロが難しく見えるとしたら、単に手順がアタマに入っていないからです。


手順:
「管理DB」ブックを開く
ALT+F11を押す
現れたVBE画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける


sub macro1()
 dim gp as variant
 dim g as variant

 gp = array("a","b","c","d","e") ’グループの具体的な中身

 application.screenupdating = false
 with thisworkbook.worksheets("Sheet1")
 .range("A:C").autofilter field:=2, criteria1:= "<" & dateserial(year(date), month(date) + 1, 1)
 .range("A:C").autofilter field:=3, criteria1:= "在庫中"

 for each g in gp
  .range("A:C").autofilter field:=1, criteria1:= g
  .copy
  activesheet.showalldata
  activesheet.cells.clearcontents
  .range("A:C").copy activesheet.range("A1")
  activeworkbook.saveas filename:= thisworkbook.path & "\フォルダY本部\" & g
  activeworkbook.close false
 next
 .showalldata
 end with
 application.screenupdating = true
end sub

管理DBブックからマクロを実行する。



#補足
>B列、「登録日」が「2012年9月」以前のもの

具体的なデータの例示がありませんが、登録日はキチンと「年/月/日」で記入してあるとします。表示がどうなっていてもかまいません。

この回答への補足

ご親切にご回答いただきましてありがとうございます。
とても助かりました!

初心者の質問で大変申し訳ございませんが、

保存先フォルダの場所を、誰がログインしてもマクロを実行できるようにするため、
共有ファイルの中のフォルダに保存したいときは、どのようにパスの指定をすればよろしいのでしょうか??

ActiveWorkbook.SaveAs Filename:= thisworkbook.path & "\フォルダY本部\" & g

ここのどこの部分をどう書き換えればいいのか教えていただけると幸いです。
初歩的な質問で恐縮ですが、何卒よろしくお願いいたします。

補足日時:2012/09/30 16:55
    • good
    • 0

あなたのやりたい作業はアクセスならばクエリーでいとも簡単に出来ます。

そしてエクセルのデータはそのままでアクセスで使用できます。回答になりませんが参考までに。
    • good
    • 1

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