VBAでローカル環境を快適にする

初めまして。

レガシィでクローズドな環境において、
巷にあふれる便利すぎる数々のOSSが使用できない制約のガッチガチな現場環境に
少しでも一筋の光明を。…という思い（？）で、VBSでツールを作成し、作業量を
減らし1分でも早く帰宅するためコツコツと始めたものですが、
あれこれと便利なものがあったので備忘録の意味も込めて記事を投稿しようと思いました。

### ＜動作環境＞
・Windows10 Pro
・Office365
（基本、Office2016ベースでの環境を想定）

### ＜必要な技術＞
・何かしらの開発言語経験があればOK
・…まぁなくてもなんとかなります

### ＜概要＞
- なにはともあれマクロを起動
- 動作を記録→構文を確認
- 記録したマクロをボタンでいつでも起動できるようにする
- ツールを作成するうえで大事な(…と思っている)こと

## なにはともあれマクロを起動
何か自動化したい動きがあれば、マクロを自動記録して、どのような構文になっているのか
確認する（小さなものであれば、それだけで済んでしまうことも）

・Excelの「ファイル」タブ→左ペインの「オプション」→「リボンのユーザー設定」
　→メインタブの下の方にある【開発】にチェックを入れる

<img width="400" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/52127fe2-3cbc-a86c-7e9d-623df2904026.png">

↓この図のように、Excelの上部に「開発」タブが出現したら準備OK
<img width="400" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/358fba1f-4ca8-fef9-a941-c9b25c816b18.png">


## 動作を記録→構文を確認
それでは早速…

記録するマクロは何でもいいんですがとりあえず、
「セルA1に値を入力して、フォントの色を赤く」してみましょう。

・「開発」タブの左側に「コード」→「マクロの記録」を押下します。
<img width="300" alt="キャプチャ.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/5d0ba350-2dc7-5e59-44a0-b6ed40a2e9a4.png">

<img width="300" alt="キャプチャ01.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/11f6d0c5-475b-c2e2-3e09-e45e011a63ad.png">

・上記のウィンドウ「マクロの記録」が出てきますので、OKボタンを押下します。

　すると、先ほどの「マクロの記録」が「記録終了」に変更されます。
　この段階で、Excelの操作を記録し始めます。
<img width="300" alt="キャプチャ02.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/df6565d7-15bf-8e91-b069-8073b962c903.png">

それでは、と…

<img width="400" alt="キャプチャ03.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/ed211f3d-d64c-c356-d593-61cbf03fdd7d.png">

・では、この段階で「記録終了」を押下して、記録を止めましょう。
「記録終了」を押すと、「マクロの記録」に変わります。
　この段階で、Excelの操作は記録されなくなります。

それでは、A1セルに「ほげほげ」してフォントを赤くしました。
どのような構文になっているでしょうか。

確認してみましょう。

Excelが表示されている状態でキーボードの「Alt + F11」を押してみてください。

![キャプチャ04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/a437c3e0-64a9-2bb6-ad4b-ccbbe32edb63.png)

Visual Basic for Application（VBA）が起動しました。
先ほど入力した操作がどこにあるかというと…

<img width="300" alt="キャプチャ05.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/16732ea8-59a0-3bb4-6637-cc1d62dc0f7d.png">

↑展開したVBAの左ペイン→「標準モジュール」→Module1を選択すると…

![キャプチャ06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/a971d6c9-b01e-3c8c-f327-01607ffc6a69.png)

↑はい。このように構文が記録されています。

### ・構文の内容
![キャプチャ07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/44c79a5d-fc4a-2622-e90e-89a142c1da4d.png)

### Sub Macro1()～End Sub
・Macro1というマクロです。このSub（プロシージャ）からEnd Subの間に記述された命令を
　実行します。

### Range("A1").Select
・セルのA1をクリックしたのと同じ動作で、セルA1を選択します。

### ActiveCell.FormulaR1C1 = "ほげほげ"
・選択されたセルに「ほげほげ」と入力します。

### With Selection.Font ～ End With
・Withステートメントといいます。Selection.Fontとは、選択された文字に対して
　いろいろ変更していきますよ、的な意味になります。
・Withステートメントの下に記述されている「.Color = -16776961」は、
　「ホーム」タブ→「フォント」内の「フォントの色」で
【赤】を選択した際に記述されます。
・TintAndShade = 0は特に気にする必要はないですが、色の明暗を設定するものです。
　1から-1を設定、0は標準値です。

(引用：【TintAndShade】Office TANAKA http://officetanaka.net/excel/vba/cell/cell04.htm)

## 記録したマクロをボタンでいつでも起動できるようにする
・さて、記録、確認が終わったら、このマクロをいつでも起動できるように「ボタン」に
　登録しておきましょう。
<img width="200" alt="キャプチャ08.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/ef6bb5bd-ad3e-265c-a27e-e3158d0233af.png">

・「開発」タブ→「挿入」→「フォームコントロール」内の一番左上のボタンのようなものを
　選択→これがまさに「ボタン（フォームコントロール）」です。
　早速、先ほどのほげほげの近くに配置してみましょう。

<img width="300" alt="キャプチャ09.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/1e1dd5f7-3240-e5a6-302c-086da3d5deef.png">

↑ボタンを選択すると、マウス操作でボタンの位置とサイズを選択できるようになります。
開始位置を決めて、左クリックを押しながら、抵当な位置にあわせて
マウスの左クリックを離すと…

<img width="300" alt="キャプチャ10.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/0a90fe2b-2a14-932b-bd26-9bf0a70d55b2.png">

↑先ほども登場した「マクロの登録」ウィンドウが表示されます。
マクロ名の箇所に、今作成した「Macro1」が表示されていますね。
これをクリックして、「OK」ボタンを押下してください。

<img width="300" alt="キャプチャ11.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/4d623dc1-a82f-7448-763e-d7934f411a54.png">

↑ボタン４？
（最初は１から生成されます。画面キャプチャを取り直したので４になっちゃいました）
…とりあえず、これでマクロが登録されたボタンが設置できました。

ボタンの周囲に〇が付いていますが、「今このボタンが選択されています」という感じです。
ここでまたサイズを変更できます。問題なければExcelのどこでもいいので空いているセルを
選択します。

…ボタン４のままだとなんのマクロかわかりませんので、編集します。
ボタンを右クリック→「テキストの編集」→【てすと】としました。

<img width="300" alt="キャプチャ12.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/bf29845f-3f4b-662f-a2ab-179d06abdfdb.png">

…さあ、これでこのボタンを押すたびに、セルA1に赤い文字でほげほげと入力される準備が
ととのいました（実用価値、0）。

早速確認してみましょう。
いったん、A1セルにある値を削除して…

<img width="300" alt="キャプチャ13.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/64119b8e-5b5b-5c48-db98-de759e100dec.png">

↑ボタンを押してみましょう。

<img width="300" alt="キャプチャ14.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2540659/2ebfde06-2f98-07e1-2f24-4f15fcd32005.png">

↑おお！

…とまぁ、こんな感じです。

このマクロ登録作業、どういうときに使うかっていいますと、普段Excel操作で決まった書類の
入力操作がルーティンで大量にあるような作業など、「あーあ、この作業、誰かに変わってもらえないかなぁ。でもミスしたら怒られるし…」的な作業をExcelに直接操作を覚えこませて入力してもらう、というような感覚に近いです。

作成者の想像力でいかようにも利用する幅は広がります。

次回は、この実用価値0マクロを、少しVBAでいじってみようと思います。

## ツールを作成するうえで大事な(…と思っている)こと
・次回からいよいよVBAを使って汎用性を上げたツール作成について記事を上げたいと思いますが、ツールを使用するうえで自分が心がけていることがあります。

それは、自分の時間や効率を上げるためではなく、周りのみんなが使いやすく
便利に思えるもの、簡単に使用できるものを作ること。だと思っています。

まずは自分で、これあったら便利だなぁと思えるものを作成して、
それをみんなに使ってもらう。

みんなからの意見や指摘を受けてブラッシュアップしてツールに反映し、
より便利なものを作成していく。自分のためにもなるし、みんなのためにもなる。
自分だけではなくみんなの生産性も向上する。WIN-WINですね。

誰にでもわかりやすく、簡単に操作ができるものを提供し、生産性が相乗効果で向上する。
エンジニア冥利に尽きるってものですね。

ではまた次回。