GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

IT業界に教え子が500人以上います

2009-11-25 11:15:09 | プログラマー教育
                   にほんブログ村 IT技術ブログへ



「ホームページ拝見しました。5年で500名以上の方に教えてきた実績は
すごいですね。・・・安心感を感じます。」


先日、ある広告代理店の方からこのような内容のメールを頂いたんですが、
これはちょっと違います。

私が教えてきた人数は、十数年間で5百人以上です。

1日や2日、セミナーで教えたという人も含めると有に数千人に及んで
しまいますので、5年前に始めたこのマクロ講座のセミナー等でVBA
を教えてきた人数は、この数字には入っていません。


富士通やCSK等で私がこれまでに担当してきたSE・プログラマー育成
の為の新人研修では、

最低でも1ヶ月程、長いときでは半年近く、

手取り足取り教えてきたプログラマーの卵たちの人数というのが
500人以上になるという話であります。


それで、IT業界というのは案外と狭いもので、(且つ、人材が流動的でも
ありますので、)それだけの人数を教えていますと、出かけた先のIT企業
の社内などで、

「あら先生じゃないですか、お久しぶりです!」

なんて声をかけられること、しばしばです。


先週もばったり再会した教え子に、

「どう、私の教えた事は今の仕事で役に立っているかい?」

と恐る恐る(?!)たずねてみると、

「はい、全然めちゃくちゃ役立ってます!」

との返事をもらい、教師冥利に尽きるなぁとつくづく思った次第です。





無料メルマガの登録は、▼こちらから▼
       「Go! Go! エクセルマクロをはじめよう!」



朝マクロ! I’m love it.

2009-11-19 12:06:56 | よもやまな話
                   にほんブログ村 IT技術ブログへ



今日は、私の毎朝の日課になっている作業についてお話します。

それは、ネット上のニュースサイトから情報を集めて、その情報の中から、
ある業界関連のニュースだけを抽出してまとめた「今日最新の業界ニュース」
みたいなレポートを作成して、顧客向けに配信する。といった内容の作業です。

このニュース情報を収集する先のサイトは、日経や読売などの大手全国紙の
電子版はもとより、その地方版や全国の地方紙、更にはネットにしかない
ニュース情報紙に至るまで、現在は実に250以上のサイトにも及びますので、
あらゆる情報を(どんなに小さな地方のニュースも逃さず)収集しています。

で、これを手作業でやっていたのではとてもまる1日(24時間)かかっても
到底終わるものではありませんので、人手で毎日やるのは無理な話です。
このようなニーズに応えるためには、少なくても3~4人の専任スタッフを
抱えて朝から晩までやるか、機械的に自動化してやるしか、方法はありません。




で、当然ながら、私のところではこれをマクロを使って自動化してやっている
わけです。

それでも、250以上のサイトから情報を集めまくって、必要な情報を抽出し、
見やすく加工するという作業は、各サイトへアクセスを掛ける時間だけでも
それなりの時間を要しますので(そのマクロの処理時間の大半はこれですが)、
私が現在使っているミニノートPCでは一連の処理に10分少々の時間が
掛かります。

毎朝、このマクロの実行ボタンを押したあと、コーヒーを入れて一服しながら
手帳を開いてスケジュールの確認や今日中にやらなければならない作業の洗い
出しなどをする。というのが、私の朝一の日課となっています。

そうして10分少々ののち、ちょうどスケジュール確認を終えコーヒーも飲み
終えた頃、ほどよくこのマクロの自動処理も終了します。

手作業なら数日→マクロで10分少々。マクロによってもたらされる毎朝の
この10分少々のゆとりの時間というのは、いまの私には非常に貴重な朝の
心地よいひと時となっています。

そのあとは、自動作成されたテキストのレポートをメモ帳で開いてに目を通し、
2~3行程度のコメントを付けて顧客へメール送信するのに5~10分程度、
マクロを実行してから送信完了までトータルで平均約15分程、
たったこれだけで、顧客から毎月高額な(?!)コンサル料をいただいています。


もし、マクロというものが無かったのなら、毎朝のゆとりの時間どころか、
24時間必死に働いてもとても終わらない膨大な量の作業となりますので、

今更ながらですが、マクロとは非常にありがたいこの上のないものだと、
つくづく想う今日この頃です。






無料メルマガの登録は、▼こちらから▼
       「Go! Go! エクセルマクロをはじめよう!」



メッセージボックスの便利な使い方

2009-11-09 14:22:49 | マクロ作成のコツ


―――――――――――――――――――――――――――――――――――
◆今日の講座
―――――――――――――――――――――――――――――――――――


┏━━▼ Lesson 138      --- 特集 ---

┃   ・メッセージボックスの便利な使い方

┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━▲


今回は、特集ということでメッセージボックスの色々便利な使い方について
学んでみたいと思います。



1)
ではまず、いつものようにマクロの記録で簡単なプログラム作りから
やっていきます。
――――――――――――――――――――――――――――+
1.エクセルを起動させます。(空のエクセルを立ち上げてください)

2.まずは、マクロの記録を開始します。
 [ツール(T)] → [マクロ(M)] → [●新しいマクロの記録(R)...]
 → マクロの記録画面が出るのでそのまま[OK]をクリック。

3.ここで、キーボードの[Delete]キーを1回押してください。

4.[ツール(T)] → [マクロ(M)] → [■記録終了(R)]とやって、
 マクロの記録を終了させます。
――――――――――――――――――――――――――――+



2)
では、いま作ったプログラムの中身をのぞいてみましょう。
――――――――――――――――――――――――――――+
1.まず、いつもの様にプログラム用の画面を表示させます。
 [ツール(T)] → [マクロ(M)] → [Visual Basic Editor(V)]

2.この画面の左上半分の[+標準モジュール]という所の+の部分を
 クリックすると、そのすぐ下に[Module1]と表示されるので、その
 [Module1]をダブルクリックします。
――――――――――――――――――――――――――――+


++++++++++++++++++++++++++++―
Sub Macro1()
'
  Selection.ClearContents
End Sub
++++++++++++++++++++++++++++―


これは、いま「マクロの記録」で作った(選択されているセルの)データを
削除するという実質1行だけのマクロです。



3)
それでは、このプログラムにちょっと手を加えていきます。
――――――――――――――――――――――――――――+
1.まず、この1行
  Selection.ClearContents
 の行の上に
  MsgBox("このデータを削除します。")
 という1行を追加します。
――――――――――――――――――――――――――――+


修正した後のプログラムは下記の様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
  MsgBox("このデータを削除します。")
  Selection.ClearContents
End Sub
++++++++++++++++++++++++++++―




4)
それでは、実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、

2.まず、A2のセルに aaa と入力してください。

3.入力したら、そのA2のセルをクリックして選択します。

4.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。
――――――――――――――――――――――――――――+


この結果、「このデータを削除します。」と表示されたポップアップ画面
(メッセージボックス)が出て、その画面の[OK]ボタンを押すとA2のセルに
入力した aaa というデータが削除されればOKということになります。

と、まぁここまでは至って初歩的な話であるわけですが、このようにデータを
削除するようなマクロ処理の場合、誤って実行させてしまった時のために、本
当に削除してもいいのか否か?というのを一度確認をしてほしいわけですね。



5)
それでは、このプログラムにちょっと手を加えます。
――――――――――――――――――――――――――――+
1.プログラムの画面に戻って、先ほど追加した
  MsgBox("このデータを削除します。")
 という行を、下記に書き改めてください。

  m = MsgBox("このデータを削除します。よろしいですか?", vbOKCancel)

2.次に、その下の
  Selection.ClearContents
 という行を、下記のIF文で挟み込んで

  If m = 1 Then
    Selection.ClearContents
  End If

 としてください。
――――――――――――――――――――――――――――+


修正した後のプログラムは下記の様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
  m = MsgBox("このデータを削除します。よろしいですか?", vbOKCancel)
  If m = 1 Then
    Selection.ClearContents
  End If
End Sub
++++++++++++++++++++++++++++―


いま、1.で修正した行に出てきた vbOKCancel というものなんですが、これは
「メッセージボックスに[OK] と [キャンセル] の2つのボタンを表示させる」
というためのオプションです。(これまでのように、特にこのオプションを
指定しなかった場合のデフォルト時は、[OK] ボタンのみが表示されます。)

ちなみに、vbOKCancel というオプションは数字でも表すことができ、
vbOKCancel = 1 になりますので、
m = MsgBox("このデータを削除します。よろしいですか?", vbOKCancel)
は、
m = MsgBox("このデータを削除します。よろしいですか?", 1)
と書いてもまったく同じ意味になります。



6)
それでは、再び実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、

2.まず、B1のセルに bbb と入力してください。

3.入力したら、そのB1のセルをクリックして選択します。

4.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。

5.表示されたボップアップ画面の「キャンセル」の方のボタンをクリック。

6.もう一度、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。

7.表示されたボップアップ画面の「OK」のボタンをクリック。
――――――――――――――――――――――――――――+


これで(MsgBoxにオプションを加えることで)、実行した処理をキャンセル
することもできるマクロとなったことが確認できたことと思います。


なお、このオプションにはいまやった[OK] ボタンと [キャンセル] ボタン
を表示するという vbOKCancel(数字では 1 )以外にも、
[はい] ボタンと [いいえ] ボタンを表示する vbYesNo(数字では 4 )や
[はい]、[いいえ]、および [キャンセル] の 3 つのボタンを表示する
vbYesNoCancel(数字では 3 )などもあります。

(プログラムが表示されている画面のヘルプにて、「MsgBox 関数」で調べ
てみると全てが載っていますので、興味のある方は詳しくはヘルプ画面の
説明を見てください。)



7)
では、再びこのプログラムにちょっと手を加えます。
――――――――――――――――――――――――――――+
1.プログラムの画面に戻って、先ほど修正した
  m = MsgBox("このデータを削除します。よろしいですか?", vbOKCancel)
 という行を、下記に書き改めてください。

  m = MsgBox("本当にいいの?", vbOKCancel + vbCritical ,"よ~く確認して!!")

――――――――――――――――――――――――――――+


修正した後のプログラムは下記の様になります。


++++++++++++++++++++++++++++―
Sub Macro1()
'
  m = MsgBox("本当にいいの?", vbOKCancel + vbCritical ,"よ~く確認して!!")
  If m = 1 Then
    Selection.ClearContents
  End If
End Sub
++++++++++++++++++++++++++++―


この vbCritical(数字では 16 )は、警告メッセージを表示させるための
オプションです。すなわち、先ほどの vbOKCancel と合せて

vbOKCancel + vbCritical ←このように指定すると、

[OK] ボタンと [キャンセル] ボタンの付いた警告メッセージのポップアップ
画面を表示するという意味になります。


その後の "よ~く確認して!!" というのは、そのポップアップ画面の
タイトルバーに表示する文字列を定義しています。(この指定によって
自分で自由に表示される画面のタイトルが付けられるということです。)



8)
それでは、再び実行してみましょう。
――――――――――――――――――――――――――――+
1.エクセルの画面に戻って、

(※注意)
以下の実行時には警告音が出ます。(ご注意の上、実行してください。)

2.では、実行します。
 [ツール(T)] → [マクロ(M)] → [マクロ(M)...] → マクロ画面が
 出るので、そのまま[実行]をクリック。
――――――――――――――――――――――――――――+


これで、[OK] と [キャンセル] の2つのボタンと、警告を示す赤い[×]印の
アイコンが(音が出るPCでは警告音と共に)表示され、その警告画面上方の
タイトルバーが「よ~く確認して!!」となっていることが、確認できたことと
思います。(確認ができたら「OK」ボタンか「キャンセル」ボタンをクリック
して終了させてください。)

ちなみに、この警告画面(vbCritical)の他にも、注意画面(vbExclamation)
や問い合わせ画面(vbQuestion)などもあります。(詳しくは、VBE画面の
ヘルプで調べてみてください。)



今回はこれで終了です。
次回は、また新たなリクエストのマクロ作りをご紹介していきます。
お楽しみに!




無料メルマガの登録は、▼こちらから▼
       「Go! Go! エクセルマクロをはじめよう!」




マクロでグラフを作成する方法

2009-11-05 10:16:50 | マクロ作成のコツ
                   にほんブログ村 IT技術ブログへ



【お便りから】


> マクロの記録を使用して「①居住地」の円グラフを作成し、 データの
> 範囲を直して「②性別」を作成したのですが、同じフォームになりません。
> どのようにすれば、数個のグラフを同時にマクロで作成できますか?




【三太郎より】


お送りいただきましたグラフとマクロのプログラム拝見いたしました。
これでやられているような「グラフをマクロで作成する」ということは
はっきり言って余り意味がありませんので、一般的にこういったやり方
はしません。

なぜかと言うと、

そもそも「グラフを作る」ということは、すなわち「グラフの型を作る」
ということに他ならないわけですから、中身のデータが毎回変わったから
と言って、いちいち「その型から作り直す」という人はまずいないだろう
という話になるわけです。

要は、

このように、もう既に完成されたグラフの型があるという場合には、データ
の方(数値の入った表の方)をグラフの型のあるシートの方に単純にコピー
してもっていってあげさえすれば、それで簡単に済むわけです。

それならばごく簡単なマクロで済みますので、そのようなマクロをマクロの
記録を使って作成すればよいだけですね。

あとは、データの値によってグラフのサイズや引き出し線が微妙に変わって
しまうなどする場合や、データの項目数が変更する場合(居住地域の市町村
数が増えたり減ったりとか)があると思いますので、その微調整部分だけを
調整するためのマクロを別途作ってやれば(特に調整の必要なければこれは
要らないわけですが・・・)、もう完璧ですよね。







無料メルマガの登録は、▼こちらから▼
       「Go! Go! エクセルマクロをはじめよう!」



他人の作った関数は理解しない?!

2009-11-04 09:33:26 | マクロ作成のコツ
【お便りから】

> Lesson67に文字列処理応用(おまけ)というのがありますが、
> そこに載っている下記のFunctionの意味なのですが
> 何をしているかは前後の説明で分かったのですが
> このプログラムの中身の意味がよく分かりません。

++++++++++++++++++++++++++++―
Function MyMid(buf)
  aa = ""
  For n = 1 To Len(buf)
    char1 = Mid(buf, n, 1)
    If char1 = ":" Or char1 = ":" Then
      aa = ""
    Else
      aa = aa & char1
    End If
  Next n
  MyMid = aa
End Function
++++++++++++++++++++++++++++―



【三太郎より】

これは、このLesson67の”おまけ”ということで色々な入力のケース

「お名前:山田太郎」でも、
「氏名:山田太郎」でも、
「お名前は?:山田太郎」でも、

といった具合に、名前の文字位置が変わったりした時にでも
いちいち文字数を数えてプログラムを変更する必要がない方法として
ご参考までに紹介した関数なんですが、

この場合、このMyMid()関数では、:記号によってその位置を判断し、
必要な部分のデータだけを取り出しています。


で、これおっしゃる通り初心者の方がこのFunctionの中身を理解する
のは中々難しいだろうと思いますが、逆に言うとこれは、
「意味を理解して(理解しようと努めて)はいけない!!」
というものなんです。

それはどういうことかと言いますと、(この辺は、特に中級編では詳しく
重点的に教えている内容ですが)
いわゆるブラックボックス関数という考え方です。

今では、ネット上などで他人が作ったプログラムのソースというのが
色々と入手ができるわけですが、

それらをいちいち、そのプログラムの意味を理解しなければ使えない!
ということであったなら、ちょっとレベルの上がった初級者以降のプロ
グラム作りは到底できませんので、レベルアップの為には
ブラックボックス関数という考え方は必修な事柄だと言えます。


元来、「他人の作ったプログラムの中身を理解する。」なんていうこと
は、すごく時間が掛かる且つ難しい話なわけです。(私のようなペテラン
のプロでも、他人が作ったプログラムは中々理解できないということは
多いものです。)

ですので、闇雲に貴重な時間を費やしてそのようなプログラムの意味を
理解しようとするのではなく、その使い方だけを理解した上で、中身に
ついてはブラックボックスとして活用できればよいのだ、と考えてくだ
さい。


例えば、このMyMid関数にしても、この様に比較的短いプログラムであ
ったとしても、これをいちいち理解しようと思えば相当の時間を要する
だろうと思いますし、中身を理解してもらおうと思って提供したという
趣旨のものではありませんので、初心者の方に全てを理解していただけ
るかは疑問な所です。


要は、

他人の作ったプログラムは、その中身を理解することに時間を費やすの
ではなく、それを自分のプログラムから呼び出して使いこなせるように
なる為の勉強(どういったデータを与えたら、どういったアウトプット
が得られる関数なのか?)ということに貴重な時間は使いましょう!!
ということです。ここでは、そこに専念して勉強していってくださいね。





その理由を詳しく知りたい方は、是非こちらをご覧ください。
 ▼賢くマクロ作りのコツをマスターする方法が満載▼ 

 マクロのプロが直伝する「エクセルマクロ成功の鉄則」






社内就職活動【お便りから】

2009-11-02 08:30:49 | お知らせ
                   にほんブログ村 IT技術ブログへ



最近なぜか、「社内で部署が変わりました!」という下記のような
お便りをよく頂く様になりました。


> 三太郎先生、その節は大変お世話になりました。・・・(中略)
> 先月、移動があって部署が変わりました。以前は営業のアシスタント
> (だたの雑用係)として、来る日も来る日も面倒なデータ整理ばかりを
> やらされていましたが、それらをマクロで自動化した功績が認められて
> 晴れて移動の希望が叶いました!・・・



それは本当、よかったですね!! 

これは、半年程前に私の初心者セミナーにご参加していただいた
30代前半の女性の方から先日届いたお便りメールの一部ですが、
セミナーの時にもらった名刺の肩書きは「○○部営業アシスタント」
でしたが、今では「社長室経営戦略チーム情報分析担当」という、
いかにも難しそうで立派な肩書きに変わったそうです。

この他にも、ここ数ヶ月の短い間に4~5名の方々からこのような
社内移動があった、とのメールをいただいています。

まぁ、就活というのは何も社外だけでするものではありませんので
この不況下で大企業でも色々と組織変更やら人事移動やらが増えている
折、この方のように「よりやり甲斐のある部署へ移動したい!」と希望
されている人にとっては、今は又とないチャンスなのかも知れませんね。

まぁ、それには人より勝るビジネススキル(Excelマクロのような)を
身に付けていれば・・・の話でしょうが。。。




 ▼本気でマクロを身に付けたい人を応援します!▼

 マクロのプロが直伝する「エクセルマクロ成功の鉄則」