[[20130502090549]] 『個人用マクロブックの使い方』(マテ茶) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『個人用マクロブックの使い方』(マテ茶)

 マクロを少しずつ勉強しながら仕事で使っています。

 よく「個人用マクロブックを作っておいた方がいい」という話をここだけでなくあちこちで見かけるのですが、
 仕組みが根本的によく分かってません…

 「他のブックを操作するためのブック」を作って、そこに対象のブックを操作するマクロを入れておく、ということでしょうか?
 (説明下手ですみません)

 例えば、「○月度売上実績集計.xls」(ファイル名は月毎に変更)というブックがあって、その中のデータを集計する
 マクロを作成したいとします。

 この場合、「個人用マクロブック」に
 ・「○月度売上実績集計.xls」を対象ブックに指定(ブックを指定して開く?)
 ・対象ブックのデータを参照して集計やデータ抽出をする
 このようなマクロを作っておく、ということですか?

 現在、あるブック(レイアウトは同じで月毎に作成されるブック)のデータを集計したり条件抽出したりする
 マクロを作成しているのですが、気が付いたら同じマクロが入っているブックが毎月作成されるわけで、
 サーバの不可軽減や、万が一データが壊れたりサーバのデータが使えなくなったりした場合のことも考えて、
 別ブックから操作した方がいいのかと思いまして…

 ネットで検索しても「個人用マクロブックを作成しましょう」という記事があるだけで、具体的に
 どのように作ってどのように使うのかがよく分からなくて…

 Excel2010、扱うブックには2003で作成されたものもあります。

 アドバイスをよろしくお願いします。

Excelが起動されると必ずOpenされます。。。という設定にします。
私は非表示にしてますので、目視上はブックが開かれていない状況と同じです。
ざっくり何をさせているのかですが。

1.全体のメニュー管理してます。
  *業務(やりたい事)は2,3ではなくて10,20。。。とありますから。
  *○月度売上実績集計.xls:おそらくこれも One of Them と言う位置付けでしょうか。
  *もちろんこれをメインに持たせても良いと思いますが。

    *例えば MustDo や Don't Forget のような私的な物も少し入れてます。
2.全業務の共通で使うマクロを持たせてます
  *基本は サブプログラム または 関数的なものです。
  *ただ数が増えてきたので、今は大半を別ブックにしています。
  *業務から使うときは Personal に参照設定しておけば、さまざまなプログラムを利用できます。
   少しでも、他のブックからのコード・コピペ作業が少なくなります。
3.ブックやシートの管理
  *沢山のブックを開いていると見苦しいので、表示・非表示や シートの表示・非表示など
  *ブックのファイルサイズや シートの一覧確認など

どれが正解かは分かりませんが、別に難しくもないので『やってみる』のが手っ取り早いのでは。
(Cod)


 私見ですが
 > 「個人用マクロブックを作っておいた方がいい」
 の本意というか主旨は

 > 気が付いたら同じマクロが入っているブックが毎月作成されるわけで

 まさにおっしゃるとおりで、
データBookにマクロを入れておくとマクロのメンテが難しくなります。
なので、データとマクロで Book を別にしたほうがいい
という「データとマクロの分離」のほうにある気がします。
そして ある一連のデータブック用のマクロをマクロブックに作成していくと、
当然 同じようなアルゴリズムで処理をしている部分がみつかります。
これを「個人用マクロブック」に入れて再利用してマクロ作成を効率化
しようという意味じゃないんでしょうか?

 > Excel2010、扱うブックには2003で作成されたものもあります。

 マクロブックは xls(2003までの形式) にしておけばいいと思います。
あと、ぼくは Personal.xls  に、よく使うユーザー定義関数やら
チップを書き込んでおき、個々のマクロブックで使うときは これをマクロブック
のほうにコピーして使います。そうしないと 他の人がマクロブックを使うとき
ぼくのPersonal.xls を参照設定しないとならなくなるので。

 (kanabun)

 (Cod)様、 (kanabun)様
 ありがとうございます。

 とりあえず、別ブックのシートをコピー・いらないデータをクリアという簡単なマクロを作ってみていたのですが、
 対象ブックを指定する段階で悩んでいます。

 まず、対象ブックを「必ずマクロブックから開く」場合と、「既に開いてある場合」で、コードの作り方としては
 「必ずマクロブックから開く」の方が良さそうではありますが、実際は「既に開いている場合」が多いので、どうやって特定すればいいか、
 という点でつまづいています。

 (今はとりあえず「必ずマクロブックから開く」→アクティブブックを対象ブックに指定、という方法でコードを作っていますが…)

 更に、「シートをコピー」あるいは「データをクリア」の時点で対象ブックが何かの事情で閉じられていた場合の処理、
 「必ずマクロブックから開く」コードで、一旦開いた対象ブックを手動で閉じる→開くの作業をしてしまっていた場合など、
 自分自身のブックを操作する場合とは違うことが多いので試行錯誤しています。

 >Personal.xls  に、よく使うユーザー定義関数やら
 >チップを書き込んでおき、個々のマクロブックで使うときは これをマクロブック
 >のほうにコピーして使います。

 これは良さそうです。
 私も新しいコードを作る時に部分的に前に作ったコードを参照することが多いですし…

 でもまだまだ初歩段階で悪戦苦闘しています…

 (マテ茶)

例えば

よく使う業務やブックの FullName を隠しシートのセルに一覧にしておきます。
で、Opencheck みたいなサブを準備しておいて仕様は。
1)既に開いているかのチェック
2)開いていなければ Open
3)Set Wb=。。。。 で変数で戻す

と、明確なターゲットは処理できますが、当然 汎用的なブックを対象にするなら
コピーと貼り付けを別マクロでメニューに登録しておくとか、
Userfrom で処理するとか、になると思います。

一つづつ上げていると切りないですが、皆さんでの共通認識としては
マクロ(サブプログラムなり機能集団)の共通利用は一致しているようなので、
少しづつ増やしていかれればどうでしょうか。

(Cod)


 割り込み失礼。
使用するマクロを何でもかんでも置いておけばよい、というものでもないと考えています。
Personal.xlsはExcelを起動した時に必ず(非表示で)開かれるブックに過ぎません。
 
私の職場の例。あるオペレータ(年齢50代)のExcel2003は下記のような感じです。
Personal.xlsにはブックを開くマクロしか置いていません。
マクロはツールバーに配置したマクロボタンで呼び出せるようになっています。
ボタンで呼び出すブックにはそのブックに関連したマクロが乗せています。
 
利点があるとすれば、
・セキュリティレベル中でもマクロ有効化の確認ダイアログが出ない。
・「Excel開いて毎日このボタン押してね」という指示だけで済むので、人が変わっても説明が簡単。
難点は
・そのPersonal.xlsがあるPCでしか使えない。
 
私自身は普段は使ってないですね。
というか、共通使用する機能はアドインにしてます。
Personal.xlsはアドインを作れるようになるまでの「つなぎ」的位置なのかも
しれません。
 
>レイアウトは同じで月毎に作成されるブック
これをやってしまうと
>気が付いたら同じマクロが入っているブックが毎月作成されるわけで、
という現象が起きます。
 
「マクロを含むブックが増えるから」の原因は
「データとマクロがひとつのブックに存在する」ことではなくて、
「ひとつのブックでひと月のデータしか保持していない」ことにあります。
 
データはリスト形式でひとつのブックに蓄積する。
レポート作成はデータベースブックから抽出するなどしてマクロブックで行う。
私が作るとしたら、マクロを含んだ、レポート作成用のブックがひとつ。
データベースのブックがひとつ。
データベースを作成するためのマクロはDBブック側に作るかもしれません。
 
「データブックとマクロブックを分けましょう」の真意は、
「データの作り方を何とかしましょう」だと思っています。
 
一行一レコードのリスト形式から任意の年月のデータを探して表示する、
っていうやりかたに切り替えたほうがすっきりするはずですよ。
 
(みやほりん)

 (Cod)様、(みやほりん)様

 私は根本的にPersonal.xlsを理解していませんでした!
 Personal.xlsは、「マクロの記録」→保存先「個人用マクロブック」などで自動で作成される隠しファイルなんですね!!

 てっきり、「自分がよく使うマクロを詰め込んだ(通常の)Excelブック」のことだと。。。。

 元々、「個人用マクロブック」を作ろうかと考えたのは、今あるデータブックで、様々な条件でデータを抽出
 したり集計したり、あるいは新規データ登録・更新を行うためにユーザーフォームがたくさんできてしまったので
 別にした方がいいのかな?と素人考えで思いついたもので…

 一から勉強しなおしてきます………

 (マテ茶)

 >>隠しファイル
と書いたつもりは無いのですが。。。
ブックの非表示と隠しシートと書いたものがミックスして、隠しファイルになったのでしょうか。
少し曖昧な言葉で失礼しました。
 >>てっきり、「自分がよく使うマクロを詰め込んだ(通常の)Excelブック」のことだと。。。。
その理解で正しいですよう。

 私の場合ですが、
何故ブックを非表示にして、一覧を隠しシート(非表示無シート)にしているかと言いますと
修正時に表示にして、うっかりと忘れると重要なシート一覧やプログラムを壊してしまう可能性
があります。現に何度か上書き経験はありますので。
人それぞれですから、どのように使うかは自由ですし、ブックを表示のまま使う事や
シート一覧も表示のままでも、操作を間違わなければ問題ないだけなんですが。
(Cod)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.