- ベストアンサー
エクセルマクロコード教えていただけますでしょうか
- エクセルマクロコードを組みたい初心者のため、具体的な要件を説明しました。
- オートフィルターを使用してデータをソートし、ソートごとのシートを自動作成する方法を知りたい。
- 特定の条件に基づいてデータを抽出し、別のエクセルシートに保存する作業を繰り返すマクロを教えてほしい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>誰がログインしてもマクロを実行できるようにするため、 では、マクロを取り付けた「管理DB」ブックと「フォルダY本部」フォルダを一緒にして共有フォルダに置いておき、みんなが同じデータブック(とフォルダ)を共有して使えるようにしてください。 マクロを修正する必要はありません。 それとも? マクロブックは一人一人別々に持ちたい、けどフォルダだけは共有したいのですか? それなら、あなたのパソコンの「具体的な共有フォルダ(のフォルダY本部)」の場所(パス)を調べてマクロに書いてください。 パスとは: "c:\test\フォルダY本部\" のような書き振りの文字列 手順: 「フォルダY本部」フォルダの「中に入れてある」何かテキトーなファイルを1つ右クリックしてプロパティを表示する 「場所」欄にパスが書いてあるので、コピーしてマクロを修正する。 #参考 てきとーにブックをよういする 新しいマクロの記録を開始する 目的の共有フォルダ(に用意した「フォルダY本部」フォルダ)の中に、ブックを保存する 記録終了する 自動記録されたマクロを確認し、具体的なマクロの書き振り(実際のパス)を読み取って反映する
その他の回答 (3)
- hallo-2007
- ベストアンサー率41% (888/2115)
>マクロのコードを教えていただけると幸いです。 今、ここに書かれている内容をすべてコード化したところで その内容が理解できますか? 当然、これから業務・運用の変更も発生するでしょう その時にあなたが責任を持って対応することになります。 自分で四苦八苦しながら作成することで身に付きますのでヒントのみに致します。 >○オートフィルターーでデータをソートし、そのソートごとのシートを自動作成。 > その後、そのシートを各フォルダに保存したい。 目的を実行するための手順ですが、色々な考え方・手法があります(これをアルゴリズムと呼びます)。 1、オートフィルターで絞り込んでいくのではなくフィルターオプションの機能を使って 別シートに結果を抽出する手法をお勧めします。 下に、VBAまでの作成手順が載ったサイトがありましたので、参考にして、とりあえず このサイトにあるボタンまで作成してみて下さい。 http://www.eurus.dti.ne.jp/yoneyama/Excel/filter3.htm 2、本当に、デスクトップに沢山のフォルダを作って、沢山のファイルを保存することが必要ですか? 最初は良くても年月とともに複雑になってしまい、失敗する事例の一つです。 (特に初心者の方が陥ってしまう一例です) 作成したフォルダ、ファイルをどのように活用しようとしているのかまで考えて次ステップの コードを考えてください。 賢い方法は いつでも、だれでも、データがあるエクセルシートから簡単にデータが抽出して別ファイル化できる データはひとつで一元化することが基本です。
- keithin
- ベストアンサー率66% (5278/7941)
淡々と、あなたのヤリタイことをその通りにマクロに書いていくだけです。ヤリタイと考えた手順が正しければ、マクロも別にむずかしいことなく書けるようになります。 もし教わったマクロが難しく見えるとしたら、単に手順がアタマに入っていないからです。 手順: 「管理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 ここのどこの部分をどう書き換えればいいのか教えていただけると幸いです。 初歩的な質問で恐縮ですが、何卒よろしくお願いいたします。
あなたのやりたい作業はアクセスならばクエリーでいとも簡単に出来ます。そしてエクセルのデータはそのままでアクセスで使用できます。回答になりませんが参考までに。
お礼
非常にわかりやすい説明でした。 誠にありがとうございました。