見出し画像

1行から始めるちょっとラクする為のプログラミング

先日とある記事に、プログラミングを始める際の障害は?というアンケート結果が載っていました。その中で上位に入っていたのが「難しそう」という項目でした。

なるほど確かに本格的にプログラミングを始めようと思ったら、どの言語が良いか調べたり、開発環境を用意したり、本を買って見たり、YoutubeやWebの講座を受講したり、といくつもハードルがありますし、調べている段階で何だか難しそうな単語がたくさん出てきて、なんかもういいかってなる気持ちはよく分かります。

そんなあなたに、準備が要らず、しかも1行書くだけで効果が実感出来るプログラミング言語を紹介しましょう。

それは、Microsoftのマクロ(VBA)です。

いやいや、マクロなんて時代遅れでしょ。だとか、マクロはプログラミング言語ではない。なんて言葉が聞こえてきそうですが、私は立派なプログラミング言語だと思いますし、決して時代遅れではないと考えています。

何しろ多くのビジネスパーソンが日常的に使っているMicrosoft ExcelやAccess、PowerPointで動くプログラミング言語ですので、開発環境の準備は不要だし、何なら会社のインストール制限に引っかかる事もなく、仕事中に触っていても怒られないというまさにビジネスパーソンの為の言語ではないかと思っています。

ちなみにGoogle Workspaceを導入の企業さんの場合はGoogle Apps Script(GAS)という言語がありますので、そちらを使ってみるのはどうでしょうか。(私は触った事がないので文法は分かりませんが・・・・・・)

1. マクロとは?

あえてマクロと書きますが、マクロはMicrosoft Office (Office365/Microsoft365)のソフト上で動く簡易的なプログラミング言語です。正式名称はVisual Basic for Applicationといって、Visual Basicという言語を参考にOffice製品向けに簡略化した言語です。Excelだけでなく、AccessやPowerPoint、メールソフトのOutlookでも動く言語となっています。

昔からウイルスの温床と言われていて、メールでは送信禁止になっていたり、最近だと古いマクロの規格がデフォルトでOFFにされたなど常にマイナスイメージで語られがちなマクロですが、裏を返すと、ウイルスを作れる程しっかりとしたプログラミング言語であるとも言えますし、現在でも有効な言語である事の証明だと思います。

また、ウイルスに感染する原因の多くが、知らない人が作ったマクロの中身を確認もせず動かしてしまったり、偽装されているマクロを実行してしまう事だったりします。

ですが、自分で書けばもちろんウイルスなんて入っていませんし、他人が作ったものでも、スクリプト(プログラムの中身)がすべて読めれば、悪さをする処理が書かれていない事をチェックしてから動かす事が出来ます。そういう意味でも、マクロを知っておくというのは損ではないと思います。

2. 何故マクロがいいのか?

最近人気の言語は?なんて記事もWebでよく見ますが、ビジネスに使える言語だとPython、Web系であればJavaScript、本格的な言語だとCやJavaなどが上位に出てくる常連さんだったりします。

ですがいずれも、本格的なシステムやソフトを書く時にプロが使うプログラミング言語です。もちろん勉強して使える様になれば素晴らしいですが、プログラミングとはなんぞや?という事を学ばないとまともに動く物が作れないので、出来るようになった事を実感するまでに少々時間が掛かります。

またこれらは、統合開発環境(IDE)といったプログラミングを始める為の環境作りや、CやJavaについてはコンパイルという作業も必要になってきます。また、ウィンドウやボタンといった画面(GUI)を作る為にも、それなりのスキルが必要となるので、初心者コースで最初に学ぶのは、真っ黒な画面で足し算をしたりかけ算をしたりHello Worldを出したり、という練習問題がほとんどだったりします。

一方マクロはというと、Office製品さえ入っていれば、古いバージョンでも新しいバージョンでも必ずVisual Basic Editorというプログラミングする為のソフトが入っています。その画面ではプログラミングだけでなく、画面の開発も簡単に出来ます。サクッと始められる手軽さというのは、お試しで学んでみたい人には重要なポイントではないでしょうか。

それから一番のポイントが、マクロを学べば仕事に活用出来るという点だと思います。会社の場合ですと、ソフトのインストール制限が掛かっている事が多く、好きな言語の開発環境をそもそも揃える事が出来ない可能性があります。

ですが、Officeを導入している企業であれば必ず使う事が出来ますし、何なら自分が作ったプログラムを他の同僚に渡して使ってもらう事も出来ます。(会社全体でマクロを無効にしている場合は、IT部門に要相談ですが・・・・・・)

やはり学ぶからには実用的でないとやる気が起きませんので、モチベーションの面でも、仕事に即使えるというのは大きいのではないでしょうか。

3. 1行で動く楽しさを知る

ですが事前準備が不要だからと言っても、プログラミングはプログラミング。言語を学ばなければいけないという点に変わりません。

では、マクロを書く為の言語(VBA)は簡単なのでしょうか。

残念ながら、マクロが特別簡単という訳ではありません。むしろExcelやPowePointなどソフト特有の操作をする為に、他のプログラミング言語にはない独特な処理を書く為のルールを覚える必要があります。

それではマクロのメリットは何でしょうか。

私が一番大きいと思っているのが、1行書くだけでも実用的という点だと思います。例えば、マクロのエディタにこんな一文を書いたとします。

Selection.HorizontalAlignment = xlRight
Excel上でAlt F4を押すだけでエディタが起動する

なんとこの1行を書いて、実行(上の再生ボタン)を押すだけで、Excel上で選択していた文字列が右揃えに変更されます。

実行すると左揃えの文字が、右揃えになっている

いやいや、そんなのExcelのメニューから押せば出来るじゃん!と思う方もいるでしょう。そりゃそうですよね。

ではもしこれが、フォントの変更だったらどうでしょう。1~2回であれば同じくメニューから実行すればいいですが、5回も6回もあの長いフォント一覧から探して選択するのって面倒ですよね。そんな時は、この1行を書いておいて、実行すれば解決です。

Selection.font.fontStyle = "HGSゴシックE"

こんな感じでたった1行書くだけで、Excelのフォントが変わります。

これが普通のプログラミングの教科書だと、1+1を入れましょうとかPrint("Hello World!")と書いてみましょう、とか実用性皆無な内容から始まるので、あまり面白くないと思いますが(実は初級としては、重要な導入ではあるのですが)、マクロであれば1行だけでも、充分実用的な命令文になります。

4. 物足りなくなったら増やせばいい

いや、こんなの実務には使えないよと思ったそこのあなた。ではこの1行の文をコピーして複数書いて行ったらどうなるでしょうか。

今度は似たような命令文を4つ書いて実行してみました。
因みに、' で始まる文字はコメントといって、プログラムの処理からは無視される文字列です。言語によっては、// や /* */などを使いますが、コメント自体はどの言語でも必ず備わっている機能です。

Selection.HorizontalAlignment = xlCenter '文字の配置
Selection.Font.Size = 8                  'フォントサイズ
Selection.Font.FontStyle = "HGSゴシックE"   'フォント
Selection.Font.Color = RGB(255, 0, 0)    '文字の色 RGB(赤0-255, 緑0-255, 青0-255)
先ほどの1行命令文をコピー&ちょっと加工して4つ作成

なんとこんな感じで、文字の配置・フォントサイズ・フォント・文字の色がたった1クリックで変更出来ました。しかもこれはさっき書いた1行の命令文をコピペしてちょこっとイジっただけで作れる命令です。

こんな感じの加工が出来るようになれば、実務での編集作業がラクになりませんか。

因みにExcelマクロの独特な文法として、Selection(選択している範囲を~)を省略するwith句という命令文があります。本やWebでは、このような書き方がサンプルとして載っている事もあると思います。

こういうのを駆使すると、デキる人に見えますし、保守も簡単になりますので覚える事をオススメしますが、慣れてから使っても全然問題ありません。

With Selection
    .HorizontalAlignment = xlCenter '文字の配置
    .Font.Size = 8                  'フォントサイズ
    .Font.FontStyle = "HGSゴシックE"   'フォント
    .Font.Color = RGB(255, 0, 0)    '文字の色 RGB(赤0-255, 緑0-255, 青0-255)
End With
先ほどの命令をWith句を使って省略した場合。少し見やすくなっている。

因みにこれは余談ですが、出来る事を検索したい時は「VBA」と「やりたい事」で検索すると、大概ヒットします。マクロよりVBAと書いた方が検索しやすいです。

「VBA フォント 大きさ 変更」「VBA 罫線 引く」などで検索すると良いです


5. もっと物足りなくなったら別の言語を学べばいい

こんな感じで、少しずつマクロの命令文を増やして行けば、自分のレベルに応じて出来る事が増えて行きますし、命令を覚える度に業務に活用出来て成長を実感出来るのではないでしょうか。

マクロという仕組みもよく出来ていて、そこそこ大きな規模のプログラムを書けますし、外部ファイルの呼び出しや書き出し、ファイル一覧の出力などExcelの外のファイルやプログラムにアクセスする方法もあります。

ですので、マクロを学ぶだけで割とプログラミングのコアな内容は学習出来ると思います。

ですがデメリットとして、ExcelなどOffice製品上からしか実行出来ないという制約があります。そういった制約が不便になってきたのであれば、次は別の言語を学んでみれば良いと思います。

プログラミング言語は方言みたいなもので、言語によって、使う単語や使い方が違う事があります。また、その言語でしか使えない機能もあります。

ですが、どういう機能があるかというのは、主要なものは概ね、どの言語でも共通しています。(for文のような繰り返しやif文のような条件分岐)
ですので、マクロを学んだ事が他の言語を学ぶ上でプラスになる事はあっても、マイナスになる事はないと思います。

そういう意味でも、まずはマクロを学んでみるというのはアリではないでしょうか。

6. まとめ

今回は、1行書くだけでも実務に使えるという事で、マクロ(VBA)について紹介しました。

プログラミングという世界は非常に独特で、一度やってみないとその考え方を理解しにくいですので、学んでみたいと思っている方は是非一度は触ってみて欲しいと思います。

一応Excelマクロのデメリットについてもお話しておきますと、マクロは変数宣言やエラー処理を省略しても動く様な仕組みになっています。ですので、ラフに書くスタイルで慣れてしまうと、他の言語を覚える際に窮屈に感じてしまう可能性はあります。

ですので最低限、変数宣言くらいはきっちりと行うようにしましょう。そのあたりは入門書や初心者向けの動画などでも一番最初に触れてくれているはずですので、あとでもいいので必ず見た方が良いと思います。

また、Excelのバージョンや実行する環境によって動いたり動かなかったりする処理や命令(関数)があったりします。そういった不確定要素が多いのはデメリットですが、複雑な処理を書かなければ、それ程気にしなくて良いと思います。

今回はあくまで動く楽しさを知ってもらう事を優先させていますので、ここからしっかり学んで行きたいという方は、こういったデメリットの部分も後々学んだ上で、ステップアップしていって下さい。

まずは何より、プログラミングに興味を持って実際に書き始めてくれる方が少しでも増える事を、切に願っています。


この記事が気に入ったらサポートをしてみませんか?