叡智の三猿

〜森羅万象を「情報セキュリティ」で語る

当サイトは、アフィリエイト広告を使用しています。

「マクロの記録」でマクロ作成するには

多くの会社は、業務効率化のためにMicrosoftのExcelやWordを使ってます。社会人としてこれらのツールがある程度使えるのは、必須だと思います。

1990年半ばにExcelやWordは急速に浸透しました。当時、わたしは社内システムエンジニアだったのですが、これらの新しいツールを社員に浸透させる役割を担ってました。

社員のパソコンスキルはまちまちでした。社内教育はレベルに応じて、テキストを作成しました。初級はキーボード操作が出来るレベル、中級はExcelで表作成が出来るレベルです。そして、上級の受講者は、会計部門など表計算をたくさん必要とする部署に限ったのですが、簡単なマクロの生成です。

マクロとは、コンピュータ上で繰り返し行う操作手順を登録・実行することで、作業を自動化する機能のことです。特にExcelで利用されることが多く、データ集計やグラフ作成、書類作成などを自動化する処理です。それによって、業務が効率化され、人的ミス削減にも役立ちます。

マクロはVBAというプログラム言語で生成されますが、研修ではそこはあまり踏み込まず、紹介程度に留めてました。研修の主眼はマクロを生成すれば、何が出来るかをイメージしてもらうことにおかれました。VBAをコーディングするのではなく、「マクロ記録」と呼ばれる、「マクロの記録」ボタンを押してから「記録終了」ボタンを押すまでの、エクセルでの作業内容が自動的にマクロ化される仕組みを紹介しました。

「マクロの記録」について紹介します。下記の表では社員番号と名前と年齢が並んでます。この表では社員番号が小さい順に並んでますが、これを年齢が若い順に並び替えする作業をマクロ化します。

マクロを記録するには、「開発」タブから「マクロの記録」を押します。すると「マクロの記録」という項目が表示されることが確認できます。





Excelにおいて、VBAを用いたマクロを開発するためには、次の手順で「開発」タブを表示する必要があります。

① 「オプション」を押します。

②左部メニューから「リボンのユーザー設定」を押し、「リボンのユーザー設定」のメインタブ内にある「開発」にチェックを入れ、「OK」を押します。

「マクロの記録」を押すと、マクロ名を決めるウィンドウが出てきます。名前は「Macro1」というので自動表示されます。これが二回目、三回目の記録になると、「Macro2」「Macro3」と数字が繰り上がります。名前を変えてもいいですし、このままOKでも構いません。

あとは、「データ」タブを押して、並び替えの操作をします。今回は、表題にフィルタをかけて、並び替えで、年齢を小さい順に指定して、並び替えを行い、フィルタを解除しました。この辺りはExcelを操作される方であれば、誰もがやっていることだと思います。

操作としては以上になるので、「開発」タブを押して「記録終了」ボタンを押します。これでマクロの記録は完了です。

実際にマクロを実行するのは、ボタンを押して作業をすることが大半ですので、ボタンを設置します。「開発」タブの画面から「挿入」を押します。

すると「フォームコントロール」というメニューがでます。今回は左上にある「ボタン」を選択します。

そうすると、表のどの位置にボタンを設置するかを求めるので、任意の場所を範囲選択します。すると、今回設置したボタンに先ほど、生成したマクロを割り当てる要求がされるので、マクロ名のところに「Macro1」を指定してOKを押します。

すると表にボタンが表示されます。はじめて生成した場合、ボタン名は「ボタン1」となってますが、もちろん任意の名前に変更できます。今回は「年齢順」というボタン名にしました。

これで、データが増えても、「年齢順」のボタンを押せば、年齢が小さい順に並び替えがされます。

ちなみにマクロはVBAで生成されると書きました。今回、「マクロ記録」で生成されたVBAは下記でした。

Sub Macro1()
'
' Macro1 Macro
'
Range("B1").Select
Selection.AutoFilter
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:= _
Range("C2:C6"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Rows("1:1").Select
Selection.AutoFilter
Range("E7").Select
End Sub

このVBAで記載されている主なコードは、上から次の意味を持ちます。

  • B1セルを選択:Range("B1").Select
  • オートフィルタを設定:Selection.AutoFilter
  • 既存の並べ替え条件をクリア:ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear
  • 並べ替え条件を追加し、範囲 C2:C6 を対象に、値を昇順に並べ替える:ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add2 Key:=Range("C2:C6"),SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

並べ替えの詳細設定

  • 1行目を見出し行として扱う:Header = xlYes
  • 大文字・小文字を区別しない:MatchCase = False
  • 上から下へ並べ替え:Orientation = xlTopToBottom

ただ、自動記録で生成されるマクロには、コードが読みにくいうえに、余計な動作の記録が含まれたりします。マクロのイメージを掴むきっかけとしては有効ですが、実務であまり使われている印象はありません。

研修中、経理部にいる同僚から「ミクロを学んでないのに、マクロを学ぶのは早すぎない!?」と、笑いながら質問されたのを覚えてます。

確かに経済学ではミクロ経済をやってから、マクロ経済をやると聞きます。同僚はとっつきにくいマクロの研修に対して、大学で専攻していたマクロ経済を持ち出して、揶揄した感覚だったと思います。

  • ミクロ経済学:消費者や個々の企業の行動など、経済の「狭い(微小な)」部分に焦点を当てて、市場の価格決定や資源配分を分析する学問。
  • マクロ経済学:GDP(国内総生産)や物価、景気循環など、国全体のような「大きい(巨大な)」経済活動の集計量を分析し、経済成長や景気変動の原因と対策を考える学問。

ITにおけるマクロは、一連の処理や命令をまとめて、自動的に実行できるようにした仕組みを指すIT用語です。経済におけるマクロとは、本質的には無関係です。ただ、「一連の小さな処理をまとめて、一つの大きな命令にする」という点は、「大きな単位で捉える」というマクロ経済の意味と共通した部分もあるんだろうなとは思います。

であるならば、ITにおけるミクロは、一件一件のデータ入力だったり、表をつくるなどの個別の作業そのものを指していると考えてもおかしくない気がします。

あのとき、そう切り返せばよかった!と・・・大昔の出来事をいま、悔やんでしまいました。