GoGoマクロのブログ

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

GoGoマクロ

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

マクロを”完全に”削除する方法

2020-01-29 07:01:26 | マクロ作成のコツ

今日ご紹介するのは、要らなくなったマクロの消し方です。

下記は、「マクロ削除」とか「VBA削除したい」とか
Googleで検索すると、必ず真っ先に(1番目に)出てくる
当講座のWebページになっています。

それは何故かと言えば、多くのホームページに書いてある
方法だけだと「完全な削除」が出来ない場合も多くあります
ので、ここにはちゃんとその辺も書いてあるからと思います。


Excelファイルからマクロを完全に削除する方法


それで、自分で作ったマクロを消す際には一般的なページ
にも書いてある方法だけで事足りるかとは思いますが、、

他人から渡されたデータのBookに、要らんマクロがたまに
含まれていて、全部消したはずのマクロが中々消えてない
で困る、という場面に遭遇する場合もある思いますから、

見逃しやすい部分も詳しく載せているこのページをご参考
に(もしもの時の為に、このページをブックマーク等に
追加していただくのも良いかと思います)されてください。

上記のページの最後の方には、全部を一発で削除のできる、
しかも比較的安全性の高い「裏ワザ」も載せています。
(ご参考までに、です。)


本日のコンテンツ紹介は、以上です。

コメント

短縮URLがブロックされる(Q&A)

2020-01-28 07:05:35 | マクロ作成のコツ

Q.

以前からですが、メルマガ内の短縮URLがavastでブロックされてしまい見るこ
とが出来ません。(接続がリセットされました、と表示されます。)

三太郎様のサイトに行って記事を探してみてもみつけることができません。
どうやれば見られるでしょうか?

 

A.
はい、この短縮URLの問題は前々から問題になっているわけではありますが、
以前にここで使っていたGoogleのサービスも終了されてしまいましたから、
なかなか後継の良いサービスが無いいうのが現状です。

お使いのセキュリティソフトの設定を変えるか、もしくはソフト自体を変えて
頂くという事しか、そのようなブロック現象を回避する策というのはないよう
に思うわけなんですが、

ただ、例えば今回の記事でしたら

> 下記は、「マクロ削除」とか「VBA削除したい」とか
> Googleで検索すると、必ず真っ先に(1番目に)出てくる

って、わざわざこう記事にも書いてありますから、それで探してもらったら
いいですし、

紹介するページには必ず毎回そのタイトルも書いていますから、
今回のであれば、短縮URLの上一行に書いてある

「Excelファイルからマクロを完全に削除する方法」

ここをコピッペしてGoogleで検索してもらえたら、一発で出てきますよ。

 

コメント

「マクロの実力診断テスト」あります!

2019-12-09 06:45:11 | マクロ作成のコツ

実は、当講座のWebページには、マクロのこんな問題も載っています。

マクロの実力診断テスト【基礎編】


これ、基礎編が10問、プログラム編が10問、上級編が7問、合計で27問の手軽にできる3択形式(一部4択あり)の問題構成になっています。

この秋に実施した「マクロ検定」の場合は、まさしくあれは真剣勝負でしたが、これは、まぁただのお遊び、です。(笑)

もしお時間あったら、暇潰しのゲーム感覚で、ぜひトライしてみてくださいね。(3問目にはヒントも載ってますよー!)

なお、最後の【上級編】のほうは、VBA上級者を自負する皆さん向けの、情報処理試験も加味した出題内容にて、コンピュータ全般の正しい基礎知識を知ってもらう為の内容となっていますので、我と思わん上級者の人はぜひこれチャレンジしてみてください。(※決して初心者向けの内容ではありませんので、その点ご了承ください。)


それで、これら問題の中から一つご紹介しますと、

【基礎編】問題8.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
初心者がマクロのプログラムを作る上で最も効率的な
作成方法とは次のうちどれでしょうか?

1. とにかく一から自分で書く
2. Webで例文を探してコピーして直す
3. 「マクロの記録」+ちょっと修正&追加する
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

これは、上記の3択問題です。(上記Web上で一つ選んで下の「判定ボタン」を押してください。)


ここの読者の皆さんならこの答え、もうお解りですよね!?このメルマガでも何度も言ってきましたが、この3択の

1番目は、いわゆる「ゴリ書き」で、
2番目は、「サンプルコード好き」です。

このどちらも、プロSEの私が最も嫌うやり方だと何度も言ってきましたね。

そんな、プロのプログラマーでもやらないやり方を、素人の皆さん方がやったら、絶対いけませんよ!

なので、この答えは当然ながら3番目の

 「マクロの記録」+ちょっと修正&追加する

これになります。これしかないわけです。

これこそが、

私がマクロを始めた頃(30年前)から脈々と語り継がれる「正しいマクロの組み方」であります。

VBA本でよく見られる「マクロ記録は使わず Sub から自分で一から書け」とか、「ネットでサンプルコードを探してそれ直して使え」とか言ったやり方は、まるで素人発想でしかないわけですから、絶対にそれに騙されてはなりませんよ!

ましてや、

「マクロの記録」で記録されたコードは"読む"ものなんかでは決してありませんから、読んでコード理解しようなんてやったら、絶対にいけませんよ!!

この講座で教えてるように、直すべきところだけを見極める能力を身に付けて、それを「ちょっと修正&追加」でマクロを組み上げていく為の道具が、「マクロの記録」であるわけです。

その辺の基本事項は、皆さんもうよろしいでしょうか。


ついでにもう一つ、

【プログラム編】問題4.

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
以下は、B1のセルにOK!と表示させるためのプログラム
です。Macro1のみを1回実行してB1のセルにOK!と表示
させるためにCall文 「Call Macro2」を挿入する位置
として正しいのはどこでしょうか?

  Sub Macro1()
    [1]
    ActiveCell.FormulaR1C1 = "OK!"
    [2]
  End Sub
  Sub Macro2()
    Range("B1").Select
    [3]
  End Sub

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

挿入位置が、上記の[1]or[2]or[3]の3択問題です。


この出題は、このように何かの一文をプログラム中に挿入する際に、初心者の人は「何処に入れたらいいのか?入れる位置が分からない」ということがよくあるかと思います。

これも、先ほど言った「マクロの記録」を活用したやり方の場合では、必ず

 Range("B1").Select
 ActiveCell.FormulaR1C1 = "OK!"

このような記録がされるわけですから、すなわちこの2行は、

 場所(セル)を選んで
 書き込む

という、Excelの”基本操作通り”のプログラムがちゃんと出来ているわけです。
だから、この問題の答えも至って単純明解ですね。

しかし、VBA本やネット上によくある書き方だとこれを、

 Range("B1").Value = "OK!"

と、大概はこう書いてあるわけです。これだと、普段のExcelの操作通りの、

 場所(セル)を選んで
 書き込む

とはなっていないわけですから、ExcelとVBAとがかい離してしまってて余計に難しく複雑化します。

それ故に「何処に入れたらいいのか分からない。」という初心者が多い始末になってしまっています。

Excelのユーザーである皆さんは、VBAのプログラムも、普段のExcelの操作の通りに書くようすれば、単純明確に、簡単に、より理解がし易い言うのは、至って当たり前の話ですね。

「マクロの記録」では、わざわざそうなるようにと機械が書いてくれるわけなんですから、

何度も言いますが、「マクロの記録をいかにうまく活用できるか。」それこそが、マクロ習得には極めて重要になるわけです。

前者の(「マクロの記録」のー)

 Range("B1").Select
 ActiveCell.FormulaR1C1 = "OK!"

は、〇ですが、後者(本やネットに多い書き方のー)

 Range("B1").Value = "OK!"

は、×です。この辺は、もうよろしいでしょうか。


ただ、私がこういうことを言うと「後者の方が1行でより短くてわかり易いじゃないか!」って、反論してくる人が必ず居る訳なんですが(笑)、それは違います。

理由はこちらに詳しくありますので、反論ある人はまず下記よく読んでみてください。

何でもかんでも1行に詰め込んでしまってはいませんか?

 

▼ YouTube再生45万回突破しました!

「エクセルマクロを10分で理解する(動画)」 

 
▼ マクロの情報が満載!
 
コメント

「コメント文」にはこれを書くべし!

2019-10-07 07:10:41 | マクロ作成のコツ
本日は、「正しいコメントの書き方」についてちょっとお話してみたい思います。

たとえばですが、英文でお決まりの

 This is a pen.

これに、日本語の説明を付けなさいと言われた場合に、

 This is a pen. 'これはペンです。

と書くだろう人が多いと思います。


これ、VBAの場合で言うと、

 Range("B1").Select 'B1のセルを選択する。

だったり、

 For i = 1 To 100 'ループ処理を100回繰り返す。

だったりします。中には、

 Next i '次のループ処理へ

といったコメントに書いてしまう人もあるかと思います。


まぁ、他人が英文やプログラムのコメントに

 This is a pen.   'これはペンです。
 Range("B1").Select 'B1のセルを選択する。
 For i = 1 To 100  'ループ処理を100回繰り返す。
 Next i       '次のループ処理へ

この様に書いているのを見たら、これらの説明文が自分にとっては無意味であるだろうことには、すぐに気づくだろうと思うわけです。

「This is a pen.」この意味が「これはペンです。」

だなんて、わざわざ言われなくても、英語の勉強を始めたばかりの中学生にだってわかりますから。。

「Range("B1").Select」が「B1のセルを選択する。」

これにしても、多少マクロの事がわかる人であれば、これは初心者だって誰だってわかっています。(ちがいますか?笑)


だから、

プログラムのコメントに書くべき説明文とは、そうではないんです。

見れば誰でもわかる(当たり前の)説明をわざわざ書き込んでも意味がないわけです。時間のムダです。それに時間費やしてしまってる人が、大変多いです。



では、

本当に書くべき意味のある説明文とは何なのか?

 This is a pen. 

この説明文として書くべきは、「これがどのようなペンなのか?」ということです。

たとえばですが、

「これは、去年亡くなった父が大学入学時の祝いにプレゼントしてくれて、それから15年間ずっと使い続けて来た大切な大切な、私のペンです。」

とかですね。

無意味な誰にでもわかる事(英文やVBAのただの翻訳)を書くのではなく、

「これを書いた自分にしかわからない事。」
~~~~~~~~~~~~~~~~~~~~

それを書くのです。書き残すのです。

それが、プログラムのコメント文というものです。その辺、書けていますか?


但しですが、

コメント文も(マクロと同様に)、最初からそうそううまく書ける人なんか居ませんですから、これも練習(書き慣れる!)あるのみです。

筆不精ではいつまで経ってもよいコメント文書けるようにはならないですから、それは日本語の文章書くのと一緒ですね。

また、書き方のコツも何も知らずに闇雲にただ書いたって、上達は望めませんですから、正しいコツを掴んでひたすら書きまくる(練習する)ということが大切です。


で、

もう一つ、プログラムのコメント文には重要なポイントがあります。

「書き込みすると自分でも納得です。言葉にするのが大事なのかも・・・」

そうです!言葉にすると(コメントを書くと)、自分が書いたプログラムを自分自身で再認識することができるわけですね。

だから、コメント文というのは「ただ説明残す」という意味合いだけのものではなく、

自分自身への確認も兼ねている。そうしたものでもありますから、特に、初心者の皆さんにはそれをぜひ意識して、忘れない内にコメント文、どんどん書いて、書き残して行っていただきたい思います。

 
コメント

「マクロの上級者」と「VBAの上級者」その違いとは・・・

2019-09-09 09:49:46 | マクロ作成のコツ

わたし、長年ここでマクロを教えてきていつも思うのが、

VBAを勉強してる人の(教える側の人も)、その多くの
人達が陥ってしまう間違いの大基が、これにあるのだと
考えています。

すなわち、それこそが

「マクロ上級者」「VBA上級者」その根本的な違い、
それが分かっていない点にあるということです。

要するに、

「マクロがバンバン作れる人」と、
「VBAの言語にただ詳しい人」と、

この両者は、根本的に違う人であるわけです。

これ、サッカー選手で例えると、

「メッシやロナウド」と
「リフティングの世界チャンピオン」

その違いみたいなものですね!

(ちょっと、例え方が難しかった(!?)ですかね。笑)


で、この読者の皆さんの中にも、
既に受験したことのある方や、いづれは受験してみようと
思ってる人もあるかとは思いますが、

それは、オデッセイコミュニケーションズ社という所で
やっている、あの「VBAエキスパート試験」というものに、
如実に表れてると思います。

当講座で実施する「マクロ検定」は、明らかに前者の
「マクロがバンバン作れる人」(サッカー選手で言えば
バンバン点の取れるメッシやロナウド)を目指してやって
いるわけですが、

その「VBAエキスパート試験」の場合には、後者の
「VBAの言語にただ詳しい人」(サッカー選手で言えば、
リフティングはうまいけど試合では活躍出来ない人。)
を目指してやっている。(と思われます。)

だからよく、せっかく就活などで一生懸命に
「VBAエキスパート試験」の勉強をして合格したとしても、
自分の履歴書にそれは書けない(もし書いてしまったら
入社後に大変な事になると自分自身わかっている・・・。)
世間でよくそう言われているのは、その為ですね。

一方、当講座の「マクロ検定」の場合は、実際にマクロが
作れる人でないと、決して合格は出来ない出題内容と
採点方法とになっています。

両方受験した経験のある人であれば、この違いは如実に
ご理解いただけているかと思いますが、それはそもそも
両者の目指すところがまったく、違うわけです。


ちょっと話は変わりますが、

先日、信州で知り合った元市役所職員だった人と
ちょっと話をしていまして、私が名刺を差し出すと

「実は、私もマクロは組めます。」
「けど、私なんか幼稚なVBAしか書けませんよ。」

と、その人は私にそう言ったんです。
その人のマクロは、「幼稚なVBA?」です。(笑)

けれど、

その人が現役の市役所職員だった頃に色々作ったという
数々のマクロは、今でも近隣のいくつかの市町村役場内
で、大変重宝されて使われているそうです。

その「幼稚なVBA?」しか書けないと言う元市役所職員
の人は、明らかに「マクロの上級者」ではありませんか?

読者の皆さん、どう思います?

役場というのは、同じ名称の部署なら大体どこでも同じ
ような仕事をしてる(!?)思いますから、その人の作った
マクロは自分の働く職場だけでなく、近隣の市町村の
知り合いにも配って回ったんだそうです。

で、それらは大変喜ばれて自分が退職した今でも重宝
されてあちこちの役場で使われているとの話です。

「幼稚なVBA?」しか書けない(高度なVBAの書き方を
知らない)その人は、けっして「VBAの上級者」ではない
とは思いますが、

じゃあ、それはマクロの「初級者」なのでしょうか?
いいえ、その人は明らかに「マクロの上級者」である
と、私は思います。

その人が作るマクロは、「幼稚なVBA?」で書かれた
「高度なマクロ」なのです。

自分も含めて、人々に役立つ便利なマクロがどんどん
「幼稚なVBA?」で作れる人、それこそが本来の意味
での「マクロの上級者」であるに他ならない思います。

高度な(難しい書き方をした)VBAが「高度なマクロ」
なのでは、決してないわけです。

違いますか?


それで、私が15年間ここでマクロを教えて来て知り
合った「マクロの上級者」の人達いいますのはほぼ
その殆どが同様に、

「幼稚なVBAで高度なマクロを作れる人」

言い替えれば、

「幼稚なVBAであるが為に、便利なマクロ
 が量産できる人」

であるわけです。

以前にも書きましたが、人間ちょっと慣れてくると
どうしても見栄を張ってかっこよく高度で難しい
VBAのコードを書こうと背伸びをします。幼稚な
コードを書くのは恥ずかしい思ってしまうわけです。

一方、そのような見栄を張らないタイプの人は、
VBAの勉強に極力時間を使わないで幼稚なコードを
書いてマクロ作りの出来る人です。

一たび、そのような高度なVBAにこだわってしまうと、
どうしても本質ではない枝葉にばかり捕らわれて、
それに多大な勉強時間を使ってしまい、肝心なマクロ
を作るという為の勉強に、時間を使えなくなって
しまうというわけです。

高度なVBAの書き方をマスターしようとすれば、それ
相当な勉強と時間を要するわけですが、そんな見栄を
張らずに幼稚なVBAで書く人いうのは、それに時間を
浪費せず、マクロの処理を考えることに多くの時間を
使っている人であるわけです。

見た目は幼稚なVBAコードでも、ガンガンそれで
マクロが作れて実務に便利なものがつぎつぎと
組めてしまういうのが、真の「マクロの上級者」であり、
それに高度なVBAは全く必要ないわけです。

「幼稚なVBAでしか書けないマクロの上級者」と、
「幼稚なマクロしか作れないVBAの上級者」と、

あなたなら、このどちらを目指したいですか?

私が15年間教えて来た結論から言うと、
この両者は決定的に時間の使い方が違うわけです。
時間の使い方、それに尽きる思います。

見栄を張って高度なVBAをマスターしようと、その
枝葉に捕らわれてしまった人は、多大な時間をそれ
に奪われますので、けっして「マクロの上級者」
には到達できない!言いますのが、長年の私の経験
からの確かな結論になっています。

見え張る人は、時間の使いどころが悪いのです。
必要以上のVBA勉強は、ただの「時間喰い虫」にしか
なりません!

日々仕事で忙しく、勉強する時間の限られるビジネス
マンにとって「時間喰い虫」の存在いうのは、ほんと
致命的ですからね。

それは、何も上級者に限らず、初心者でも中級者も
まったく同じです。時間の使いどころが重要である
点は、何の勉強をするのでも一緒ですね。


以上、「マクロの上級者」と「VBAの上級者」
その決定的な違いはお解りいただけましたでしょうか?

コメント

「マクロの記録」の手順(B2のセルを黄色で塗るマクロ)

2019-08-18 09:49:19 | マクロ作成のコツ

【本日発行メルマガ記事の捕捉説明】です。

 

1) まずは、下記手順にて「マクロの記録」を行います。

 

1.エクセルを起動させます。(空のエクセルを立ち上げてください)

2.まずは、マクロの記録を開始します。

 [開発]タブの[コード]で [マクロの記録] をクリック →

 「マクロの記録」画面が出るので、そのまま[OK]をクリック。

3.ここで、B2 を選択してください。

4.[開発]タブの[コード]で [■記録終了] をクリックして、

 マクロの記録を終了させます。

5.そしたら再び、マクロの記録を開始します。

 [開発]タブの[コード]で [マクロの記録] をクリック →

 「マクロの記録」画面が出るので、上の「マクロ名(M)」

 の入力欄を Macro背景黄色 に変えて[OK]をクリック。

6.ここで、 [ホーム]タブの [フォント] の[塗りつぶしの色]で、

 標準の色の中から「黄色」を選びます。

7.[開発]タブの[コード]で [■記録終了] をクリックして、

 マクロの記録を終了させます。

 

 

2) プログラムの画面を開きます。

 

1.[開発]タブの[コード]で [Visual Basic]をクリック。

この画面の左上半分の[+標準モジュール]という所の+の部分をクリックすると(※ない場合はそのまま次へ)、

そのすぐ下に[Module1]と表示されるので、 その[Module1]をダブルクリックします。

 

記録されたSub Macro1に、メルマガに記載の Call文 の1行を追加します。

+++++++++++++++++++++++─

Sub Macro1()

     Range("B2").Select

     Call Macro背景黄色  '←このコードを追加する

End Sub

+++++++++++++++++++++++─

 

 

3) それでは、実行してみましょう。

 

1.エクセルの画面に戻って、新しいシートを開いて(シートが

 無い場合は新規作成して)ください。

2.では、さっそく実行します。

 [開発]タブの[コード]で [マクロ] をクリック → 「マクロ」

 画面が出るので、そのまま(Macro1が選ばれた状態で)[実行]

 をクリック。

 

 

 

 

コメント

なぜ?「マクロの記録」を使うべきなのか

2019-07-27 07:58:15 | マクロ作成のコツ

さて、前回はちょうど15周年の記念日の配信ということで、 ノンプログラマー(本職のプログラマーではない初心者)が マクロを習得するためには、かなり重要な話 「マクロの記録」は飲み物です!

歴史的な背景も踏まえての、このような投稿を書きました。

で今回はその続き、実際に現実的な面から見た「マクロの記録を使うべき理由」について、です。 今日の話も、大変に重要ですよ!

「自分はマクロが苦手だ!」 「自分でマクロが作れない!」とお嘆きの人は、特に心して以下読んでくださいね。

 

では、まず初めに問題です。

Q.今、B2のセルに"2019年1月1日"という日付のデータがあったとします。これを自動で和暦表示に変えるマクロを作りなさい。

要するに、

 "2019年7月1日" → "令和元年7月1日"

 こう表示を自動で変える為のマクロ、ですね。このマクロを簡単に作る方法、わかりますか?

ネットで調べる?「ブッブー×」大はずれです。全然ダメです!

正解は、

 まずは、必ず「マクロの記録」ですね!  素早く、正確に、これ作る為には、それに尽きます。

そもそも、ネット情報は正しくない場合が多いということはもう皆さん周知の事実だろうと思いますし、わざわざネットで検索して、サイト選んで読んでみるのも時間が掛かり面倒なわけですし、サイトによって言ってることも全然違ったりする場合も、多いわけです。

一方、

 「マクロの記録」なら、一発です!  しかも、必ず正しいです!  しかも、いつでもコードは一定です!

要するに、

「マクロの記録」で(機械で)書いたコードというのは、人間のような「気まぐれ」は一切無いわけです。

ましてや、個々のレベルによる個人差もありません。機械(マクロの記録)の良い点は、

いつでも、どこでも、誰にでも、同じ操作をすれば必ずいつも同じ、一定のコードを書いてくれます。

だから、その都度新たに勉強する必要がありません!

一方の、

人間というのは大変「気まぐれ」なので、同じ人であっても書くコードは気分によって毎回違いますし、

ましてや、

人それぞれのレベルや書き方やスタイルによって、てんでまちまち、書く人によってコードは実に「ばらばら」です。同じものは二つとありません。

だから、人間の書いたコードを捜して、それ「丸写しして、コード読んで、理解して、修正して使おう」とすればその都度、知らないコードを散々ネットで調べて、「理解しよう、どこを修正したら?」と散々格闘して・・・、それを余儀なくされるわけです。

多くのVBA先生達が、「VBAの難しい構文を理解しろ!」「他人の書いたコードを読めるようになれ!という発想で教えてる思いますが、

それだから、自分でマクロが組めるようにはならないし、いくら時間を使って勉強しても「何も作れない」のです。

そのような他人のコードを理解することなど、私のようなベテランSEの余程のプロであっても難しい事なのです。

他人のコードを理解する時間があったら、一から自分で作った方がよっぽど完成速い言うのが、プロの世界の常識事であります。

マクロのプログラム(自動化の手順)は、「自分の組み立てたロジック(処理の手順)で作る!」その考え方こそが、プログラミングには絶対的に重要です。

その為には、前回言ったCADユーザーは「コマンドの記録」をうまく利用して、それを組み上げて操作自動化してきたという長い歴史に従ってマクロを組むわけです。それしかない!

今日の話のまとめですが、

「マクロの記録」を使うべき理由は、いつでも「一定」だからです。すなわち、それは「安定」「安心」を意味します。

人間の書いたコード個人差激しく「や間違い」も多く、「やすやすと素人なんかに解読されたくない」という悪意も渦巻き、利用する側にとって「不安定」が激しいわけです。

なので、そのように「気まぐれ」な人間の書いたもの(他人のコード)に頼るのではなく、「安定」した「マクロの記録」を存分に利用して自分で組み上げたコードで、マクロは作るのです。

でないと、

その人間の「不安定さ」にいつまでも振り回される事になりますので、それは多大な時間を失い続けることになりますので、くれぐれもご注意ください。

ちなみに、

冒頭の問題を素早く解く為の「マクロの記録」の手順ですが、

 1.「マクロの記録」を開始する  

 2. B2のセルを選択する

 3. セル書式画面を開いて、[表示形式]の[分類]の[日付]で[カレンダーの種類]で「和暦」を選んで[OK]

 4.「マクロの記録」を終了する

です。

ネットで検索するよかずっと速い!ですよね。気になる人は、試しに上記やってみてくださいネ。

 

本日は、以上です。

 

コメント (1)

「マクロの記録」は飲み物です!

2019-07-19 09:06:46 | マクロ作成のコツ

本日は、当講座が今月でまる15周年を迎えたということで、何か重要な話を(ネットや本には絶対載っていない話を)してみたい思います。

題して、「マクロの記録」は飲み物です! (「マクロの歴史も知らないでマクロが教えられるか!」ってな内容になっています。)

特に、マクロの教え手側の人には、他人に間違った教え方しないよう、ぜひ知っておいて欲しい思います。

たとえばそれは、中学校の美術の先生が、生徒達に油絵の描き方教える際に「印象派」の歴史すら知らないで教えていたら、方向性間違ってしまうだろうのと同じです。

VBAの世界では、マクロの歴史的な背景も全く知らないで教える人ばかりが多いですので、「どうにも世間のマクロの教え方は皆間違ってる!」そう危惧してならない次第です。。

 

で、そもそもが、「マクロ」と言うものは何処で発展してきたのか? と言うと、それは、紛れもなく「CAD」の世界になります。

「CAD」というのは、コンピュータ上で設計図などを描く為のソフトウェアの事ですが、設計図ですからとにかく細かい作業になるわけです。操作が大変なのです。

こう言っては何なんですが、「CAD」の操作の複雑さと言ったら、とても「Excel」の比ではありません!

ここの読者の皆さんは、たぶん全員がExcelのユーザーだと思いますが、それで日々のExcel操作が面倒だから、働き方改革しなきゃならないから、ということでこれを読んでくださってることと思います。

けど、私に言わせるとExcel操作の面倒くささなんて、CADに比べたらまさしく「屁のカッパ!」です。(笑)

それを証拠に、たとえばPC職種での求人で、「CADオペレーターの募集」はあっても「Excelオペレーターの募集」というのはないわけです。

設計図を描く為のCADのソフトというのは、専門職を雇ってやらねばならないほど、細かくて、面倒で、時間も掛かる作業であるわけですから、ただ数字や文字を扱うだけの表計算ソフト(すなわちExcel)のそれとは、比べものにはなりません。

なので、「大変なPC操作を改善する方法=マクロを組む」ということですから、マクロは長らく、設計図ソフトのCADの分野で発展を遂げてきたという技術であるわけです。

読者の皆さんの中には私の知る限りでも、そのCADオペレーターをされてる方も多く居られますが、それは要するに、仕事柄その辺が(マクロを組む意義が)よくわかっているからだと思います。

実は、私は元々がそのCADソフトの開発エンジニアです。だから、自分で言うのも何ですが、言わばマクロのプロフェッショナルです。(ただのVBA本出しているようなライターのレベルではないわけです。。笑)

それで、そのCADのマクロの世界では、その昔から「マクロの記録」に似た機能というものがあったわけです。

「マクロの記録」というのはマイクロソフトが作った言葉なので、CADの世界では主にそれは「コマンド記録」と呼ばれていたものです。 自分が行ったCADの操作が、CADマクロのプログラムで(1行のコードで)出てくるという、優れモノの機能です。

だから、CADオペレーターと呼ばれる職種の人達は、自分の作業を効率化する為に、昔からその「コマンド記録」を頻繁に活用して、出てきた1行コードをいろいろ組み合わながら、複雑な操作を効率化するために役立ててきたという長い歴史があります。

それこそが、CADでの「コマンド記録」に端を発した現在で言うところのExcelの(Microsoft Office製品の)「マクロの記録」の歴史であります。

マイクロソフト社の誰かエンジニアが、CADのソフトからその仕組みをマネて作ったいうのが、Office製品に今ある「マクロの記録」であったのだろうと(間違いなくこれはパクリだ! 笑)と、私は憶測しています。

だから、いいですかっ!

マクロの組み方いうのは、元来から当講座のレッスンで散々教えて来たように「マクロの記録」から組み上げていくものであるわけです。

「マクロ」は、そもそもが「マクロの記録」ありき、なのです。そこから組んで、組み立てていくというものであります。複雑な操作になればなるほど、そうなります。

そうした「マクロの記録」の長い長い歴史も知らないで、「マクロの記録は使うな!」的な主張を展開されているVBA先生が、本でもネットでも多いと思いますけれど、、CAD開発に精通したエンジニアの私から言わせると、それはまさしく、愚の骨頂!本末転倒!であるわけです。

昔からCADの世界で効率よくやって来たマクロ本来の「正しい組み方」いうのを、もっともっと世間に広く広めていかないといけない思います。本来、「マクロの組み方」というものは「一般的な他のプログラムの組み方」とは、全くの別物なのです。

それで、つい先日も今やっている「三太郎アカデミー」の塾生の一人から、

> 以前から、マクロの記録は使っていたのですが、 > 必要のない行を見分けられずマクロは複雑だ!… > と思い込んでいました。

とのメールをもらいましたが、この方も言うように、「必要のない行を見分けらるようになったら・・・」それで、良いだけです。それで、「マクロは複雑」ではなくなるわけです。それで、「マクロの記録」も大いに活用できる。

いいですか、マクロは「マクロの記録」から組み上げる!

それが、古来から続いてきた正しいマクロの組み方です。一般のプログラミング(素人には難しすぎる!)とマクロのプログラミングとの、そこが第一の大きな違いですね。

だからまさしく、Excelマクロのユーザーにとってみたら、

「マクロの記録」は飲み物です!

すなわち、マクロは「マクロの記録」無くしては生きてはいけないもの、そう言えるだろうと思います。

初心者の方、ノンプロの方は、この歴史的な背景をよく心して、正しいマクロ作りの勉強に励んていって欲しい思います。

 

コメント

プログラマーは鈍感力も必要です

2019-06-17 06:18:29 | マクロ作成のコツ

Q.

> 私、VBA本ほとんど見たことないのですが、

> 意味が分かると出来ることが増えるような気がしてしまいます。

A.

それは全く必要ないな。 知る必要はないってメルマガでも今回のテキストでも散々言って きてるでしょ。うちの講座で出来る上級者は皆それは気にしない 人ばかりです。間違いなく!

Q.(続き)

> 意味が分かると出来ることが増えるような気がしてしまいます。

A.

これがそもそも、VBA本書いてるようなマクロの本質知らない素人先生の考えに過ぎない から・・・。

むしろ減る!

余計なことを気にすればするほどその理解に時間掛かってしまう のは当然なんだから、それで肝心なことに掛ける時間が減るのは 当たり前。プログラマーは鈍感力も必要なんです。

それは、全てを理解するに越したことはないわけでしょうけど、 けど、百科事典に書いてある内容全部の理解なんて出来ますか? 我々は、百科事典に書かれてる事の殆どは意味知らない。それでも 十分に日々の生活は送れているわけです。

勉強に使える時間は有限だし、自分が一生の間で知ることは 世の中のごくごく一部でしかないわけで、私なんか60を前にした今だに 人生知らないことだらけです。

自分は何でも知ってるだなんてヤツはただの思い上がりに過ぎま せん!(人生哲学!(笑))から、 それはまぁ、パートナーのスマホの中身と一緒です。知らぬが仏!(笑) なんで、VBAも一緒ですね。

 

コメント

危険な「サンプルコード症候群」になってませんか?

2019-05-14 11:23:41 | マクロ作成のコツ

今回の『三太郎アカデミー』の目的でもあります「一度もマクロを作った事のない人」に、もしくは 「初級程度のマクロすら未だ作れていない人」に、「正しいマクロ作りの基本」を身に付けてもらう。

初級レベルのマクロならほんの1時間もあれば余裕で 完成できる人になってもらう為に実施するものです。

そこで、今日お話しする内容は、ではその 「正しいマクロ作りの基本」とは、いったい何か?どうすれば、何を身に付ければそのようなごく短時間で、 確実にマクロが組めるというスキルが得られるようなる のか?

それについて、です。

先日のこと、ある知り合いの男性から以下のような 面白い話を聞きました。。

「自分も料理を始めよう思って『キューピー3分クッキング』 を観ていたら、(3分とは言わないまでも手軽に作れる料理 を教えてくれるのだろう思って・・・、)

そしたら、途中でいきなり、冷蔵庫の中から予め仕込んで おいた料理というのが出てきてー、

それ、3分じゃ作れないじゃん!

て言うか、それ仕込むまでの、そこまでの作り方も教えて くれないと、自分家の冷蔵庫のどこを探してもそれ入って ねーから・・・。」って、そう思ったそうです。(笑)

これ、よくあるVBA本の場合でもそうなんですが、、

応用の章に入ると、いきなり筆者が作ったサンプルコードが (という名の仕込み料理が)登場してくるわけです。(笑)

そこまでの作り方は、本のどこにも載っていません。 そのコードに書かれた構文の説明が長々と書いてあって、 そこからの(仕込まれた後からの)直し方だけ書いてあって、後は、「はい!これこの様に直して使ってくださいよ。」 って言うわけです。。

いいですか、

世の中に、仮に20の業種があるとして(仮にです)、 各業種には仮に20社の会社があったとして、その各社には 20の部署があり、その部署の中にExcelで頻繁に仕事する 社員が20人居たとして、その各社員は20通りのExcel作業 を担当しているとします。(大雑把にです。)すなわち、要するに世の中には 20×20×20×20=16万通り の(少なく見積もって、ですよ)Excel作業があるわけです。

だから、本なんかに載っている突然現れたサンプルコードが 実際に役に立つという読者は、仮にその本が16万部売れた としても精々数人しか居ないわけです。その他大勢の、自分で仕込むまでの料理を作れない読者に とっては、そのサンプルコードいうのは何の役には立ちま せんね。そんなものをわざわざ理解させられて直せた所で、まったく 全然自分の実務応用にはならないわけです。それは16万通り ある中の、たった一つのサンプルに過ぎませんから。。。

必要なのは、予め仕込まれたサンプルコードの詳しい解説 ではなく、そこまでどうやって作るのか?であるわけです。「仕込むまでの仕込み方」です。そこは何も説明がない。。。 違いますか?

巷の高額VBAセミナーでもそうです。講師が予め用意した サンプルコードの直し方は詳しく教えてはくれますけど、じゃあ、そこまではどうやって作ったの? そこは何も語りません。仕込み方は教えてくれません。(笑)

16万通りある中のたった10通りや20通りのサンプルコード があった所で、それがあなたの業務に役立つ可能性いうのは、 限りなくゼロに近いわけです。おまけに、その予め仕込まれたサンプルコードいうものは、 初心者にでも容易に直し易く作られたというものです。それで、「わっー、出来た出来た!」と喜んで、帰される (気持ちよく帰ってもらえるよう仕込んでいる・・・) というだけに過ぎません。だから、セミナー終わりの感想文 では皆が「これなら自分にも出来そうだ~!」と、直後の 感想は必ず皆そうなるわけです。でも実際、帰ってから何か自分の実務に応用しよう思った ところで、最初から「???」にしかならないわけなので、 そのような経験、心当たりがある人もきっと多い思います。 いきなりの、「???」です。(笑)

それが、本でもセミナーでもネットでも、巷にはびこってる 「間違ったマクロの作り方」その典型です。だから皆、結果 マクロが作れない(泣!!)となってしまっているわけです。これは、いわゆる「サンプルコード症候群」の量産です。

例えば、カレーを作る場合、殆どの人は箱に入った市販の ルーを買って来て、そこから作るわけです。インド人でも ない限り、スパイス調合するところから作るという日本人 は滅多に居ませんよね。けど、あなたが昔よく食べていたお母さんが作ってくれた あの懐かしい我が家の味のカレーが食べたい!と思っても、 市販のルーから作ったら「ハウス」や「S&B食品」の味 にしかならないわけです。(笑)

あなたが食べたいと望む「我が家のカレー」を食べるには、 お母さんにそのルーの作り方から詳しく教わるしかありま せんね。あなたが欲しいと願うマクロの場合も、またしかりです。 市販のルーからでは、あなたの望む(あなたに固有のー) マクロというのは決して作れません。

いいですかっ!何度も何度も何度も言うようですが、

「プログラムを読む」とは、「プログラムの流れを読む」 ということであって、VBA構文の意味を理解したところで 他人の作ったプログラムなんか読めるわけがないのです。だから、プログラムいうのは一から自分で作るしか ありません!それが、プログラマーのごく常識です。

それで、

私が教える「正しいマクロ作りの基本」(当講座で長年 やってきたレッスン勉強)と言いますのは、そのような、まやかしの仕込まれたサンプルコード無しで、 最初から、一から自分で作れる方法というのを教える為の 内容になっています。 突然いきなり、私が作ったサンプルコードというのは一切 出ては来ません!毎回ちゃんと、その仕込み方から詳しく 書いてあるわけです。

プログラムは最初から、一から自分で作れるようにならなけ れば、意味がないのです。(途中、1行2行を他人の作った コードからコピッペして使うぶんには何ら問題はないわけなんですが、)他人の作ったコードを全部コピッペしたら絶対いけません!それでは、他人に頼らなくては生きていけない人間にしか なれません。もっと主体的に、16万分の1の偶然の幸運に 頼るというのではなく、自らの力で、仕込むところから、 しっかり自分で作れる人間に、是非なってください。

「正しいマクロ作りの基本」をちゃんと学べば、 必ずそれは出来るようになります。他人のサンプルコード 頼みの人間は、いつまで経っても他力本願で、けっして 自力で出来るようになる訳がありません。違いますか?

先日も、とある初心者の女性が私にこう言いました。「ネットで見つけたサンプルコードをちょっと直して 使ったら、上手くいったのよ。」と。

でもそれは、競馬と同じ「ビギナーズラック」でしかないわけです。 初めて馬券を買った人によく見られる、いきなり万馬券が 当たって数十万円を大儲けして、それで味を占めて、 深みにはまってしまって、結局、その数十倍ものお金を損してしまう・・・。 という、まぁよくある話ですね。

VBAの場合もそれは同様です。たまたま偶然、そのような サンプルコードが見つかる幸運を得て、それに味を占めて しまった人というのは、必ず、次に見つけたサンプルコードにああでもないこうでも ないと格闘をして、それにたっぷり浪費した時間で、 最初のビギナーズラックで得した時間の数十倍、数百倍の 多大な時間を、結局損することになるわけです。他人の作ったサンプルコード頼みの作り方をしようとする人は、 必ず、そうなります。多大な時間を浪費します。ネットで見つけたサンプルコードとの格闘をもう半年以上も 続けている・・・ってな人が本当、世の中沢山居るわけです。 (そんな心当たりはありませんか!?)

今日の話をまとめますと、

「正しいマクロ作りの基本」とは、要するに、他人の作ったサンプルコードに頼らずに、仕込みから自分で 出来るようになること。

です。

ここの読者の皆さんにおかれましては、市販のVBA 本やネットなどに載っている「まやかしのサンプルコード」 には絶対に騙されることのないよう、ぜひ、主体性を持って 「正しいマクロ作りのやり方」いうものを勉強して行って くださいね。私はそう願っています。

そもそもが、

プログラム(マクロ)というものは、一から自分で作れる ようならなければ、ほんと、元も子もありませんですから、他人の書いたサンプルコードを頼りにさせられる(途中、 1行2行を他人の作ったコードからコピッペして使う分には 問題ないので大いにやるべきなんですが、)「サンプルコードの全コピッペから 始めろ!」言うよーな、そんな偽プログラマーにはくれぐれも騙されぬよう、 皆さんご注意ください。(素人言語であるVBA教える先生達には残念ながら、そんな人達がたくさん居ますから。。。)

 

コメント