VBA学習備忘録①　VBAの良いところを褒めてみる


<h2>そもそも「VBA」・「マクロ」とは</h2>
<h3>VBAとは、マクロ（Microsoft Office系のソフトを使うときの操作を自動化する命令プログラム拡張機能、書き方はJavascriptに近い）を書くためのプログラミング言語、「Visual Basic for Application」の略</h3>

VBA学習備忘録②　個人的Excel マクロ　チートシート①

https://qiita.com/thinking-weed/items/d2e822bfb6e4479a57f6

<h2>VBAを習い始めた経緯、VBAに対するイメージ・偏見</h2>

私は今後お世話になる会社で私が所属する部門でよく使うとのことで、最近VBAの学習を始めました。勉強の合間とかにゴロゴロしながらX（旧Twitter）を眺めていると、
<h3>今時、VBAって何に使うん？？</h3>

というVBAに関する消極的な意見が時々散見されます。

　実際自分も、以前しばらくある程度Pythonを勉強していた時期に、下記の主な参考資料②とか行きつけの書店から、**Pythonを使うとExcelやメール操作を自動化できる**ことを知っていたし、転職エージェントポータルサイトなどでは見る機会が少なく、本当に謎で、そもそも言語なん？？ぐらいの認識でした。
 
 　**※ところでPythonも X(旧 Twitter）でベテランの方に教えてもらったところによると、外部ライブラリーをimportして商品開発をしてみようとすると、実はライセンスが有償だったなんていうこともある**そうで注意が必要です。
 
 　話を戻しますが、転職活動時のとある商工会議所で知って企業訪問に伺わせてもらった、家具などを作っているある企業で、「実際にExcelにVBAを使っていて、**作業効率を上げるのにかなり役立っている**」という話をそこの企業の現場の方に聞き、とりあえずExcelのなんかの機能かな・・・（´｡｀)と思っていたのですが・・、勉強し始めてみると、
<h3>あれ？？確かにこれ結構便利そう(･∀･)</h3>

と思ったので、「**コメントアウト」のショートカットキーがそもそも初期状態になく、使いたい場合個人で設定する必要がある**等、時々イラッとさせる部分があるものの、便利だなと思った点を以下列挙します。

※コメントアウトのショートカットキーを設定する参考資料
https://www.tipsfound.com/vba/02004-vba

<h2>VBAの良いところを挙げてみる</h2>
<h3>①MicroSoft Officeソフトが PC に入っていれば環境構築（？）に新たに何かをインストールする必要がない</h3>

　エディターであるVBE（Visual Basic Editor）もそれらソフトの拡張機能として存在します。

<details><summary>WordやExcelでVBAを使ってマクロを組む前の下準備：「開発タブを出現させる」（他も同様に設定）</summary>

<h3>とりあえず初期段階では、いずれのOfficeソフトもVBAでマクロを記述するための「開発」タブが以下のようにありません。（以下、しばらくWordを例とした場合です。）</h3>

![firstsettings.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/3ff98590-6be9-2ec6-5cb6-2a6480c7ecaa.png)

そのため、以下のようにファイル⇒オプションを押して

![settings2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/65eeb478-f910-d435-95f3-f7d474269c19.png)

そうすると次の画像のように、Wordのオプションのウィンドウが出てくるので、

![settings3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/4da83d38-b9a6-f64d-151a-376dee950420.png)

リボンのユーザー設定　⇒　コマンドの選択のプルダウンメニューを「メインタブ」にする　
⇒　「開発」を選択　⇒　追加　⇒　OKでオプションのウィンドウを閉じる

と以下のような開発タブが現れます。

![word_development_tab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/6ed823a6-50aa-dd21-904f-0e8ccd281b0f.png)

なお、全く同様にして以下のような開発タブが現れます

※Excelの場合

![Excel_development_tab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/8864192d-a51d-1831-f770-746135d7ff56.png)

</details>

____
<h3>②実は、Excelだけのものではない。MicroSoft Office系のソフトなら大概ついている（最初表示されていないだけ）</h3>

<h4>　実は、VBAによるマクロは Excel限定の物ではなく、（UI等から、おそらく使うメソッドなどは変わると思いますが） PowerPoint、Outlook等にもあります。</h4>

<details><summary>PowerPoint や Outlook の開発タブ</summary>

※PowerPointの場合

![pptx_development_tab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/daaca776-f7d8-f621-86e8-32267817bbfa.png)

※Outlookの場合

![outlook_development_tab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/f247a041-e13c-daf2-1ca1-1a3dfc9a3b8b.png)

</details>

____
<h3>③非IT業界のパソコンが苦手な人でも、かなり気軽に使いやすい。また、VBAコードの書き方が分からなくても「マクロの記録」機能を使ってコードを組める</h3>

<details><summary>マクロを組むときの主な流れ</summary>

<h2>マクロの組み方には、以下（1）のパターンと（2）のパターンと（1）と（2）を組み合わせるパターンが主にある</h2>

<h3>（1）VBE（Visual Basic Editor）を開き、0 からVBAを使ってマクロを組む</h3>

![word_VBE.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/f1a8b0de-34b8-bc57-e9a3-6b0f388ebfe6.png)

開発タブのVisual Basicをクリック　⇒　 **挿入**　（**※ファイルではない**）
⇒モジュールを選択（指定した操作を実行する基本的なマクロ（Subプロシージャ）の場合、標準モジュール）
⇒コードを書く部分に書いていく。

諸々細かい部分は違うと思いますが、Excelも同様です。

**※なお、紛らわしいですが、「Pythonのモジュール」はPythonの.pyファイルそのものを指します**

<h3>（2）マクロの記録</h3>

マクロとは関係のないWordの部分、ないし、Excelのセルをあらかじめ選択しておく
⇒（エクセルの場合、場合によっては、「相対参照で記録」をクリックしておく）
⇒　「開発」タブのVisual Basicのちょっと右にある「マクロの記録」をクリックして、記録して自動化したい作業操作を実行（※「マクロの記録」ボタンの位置については上の画像参照）
⇒上記の操作を終えたら「マクロの記録」の部分が「記録終了」に置き換わっているので、「記録終了」を押す
⇒　上の（1）の方法でVBEを開くと、記録したマクロに対応するVBAのコードが自動で組まれている

※実際は記録した物をVBEで修正することもあるようです。

<h4>※なお、マクロを記録するときに操作に費やした時間は、マクロの実行スピードとは全く関係ないらしいです。</h4>

※万が一記録する操作を間違えた場合は、一旦記録を終了して、再度マクロを記録し、その際に間違えたマクロ名を指定して、メッセージに従うと修正できます。
</details>

____

　上記のマクロを組むときの主な流れの（2）の「マクロの記録」でマクロを組める上に、**基本開発タブは主に職場でマクロを書く人が設定を変えない限り、ExcelやWordに現れ続けると思うので、あとは「マクロの実行」をクリックしていくだけで、マクロを実行できます。**

※いずれの方法にせよ各マクロに対して名前をつけられるので、他言語の変数などと同様、マクロ名の命名が大切なように感じました（**平仮名漢字込みで命名できます**）

<details><summary>例　Excelのマクロを実行する場合</summary>

![macro_execution.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3584834/1f7fc4bd-67e1-bcae-5277-a9565771fc68.png)

左上の「マクロ」を押して、実行するマクロを選択後、実行をクリックするとマクロが反映されます

※Alt+F11でVBEと一般的なエクセルシートの画面を切り替えられます。

</details>

____
<h3>④どうも Python のモジュールや Laravel の blade のようにVBAで作ったマクロは使い回せるらしい</h3>

　※まだ事実を知っただけなので、完全に理解次第追記します。

<h3>⑤コードを結構自動補正してくれる</h3>

・綴りが合っていれば、大文字と小文字が少し変でもEnterを押すと補正されます
・半角のスペースなどある程度フォーマットを整えてくれます

____
<h3>⑥マクロの内容は、Excelのブックを保存すると自動で一緒に保存される</h3>

　**※マクロを組んだエクセルを保存するときはマクロ有効ブックにする必要はあります**

※なお余談ですが、VScodeは左下の歯車マーク⇒設定（settings）⇒auto saveで検索
⇒auto saveのプルダウンを「AfterDelay」にすると、オートセーブになります。

___

<h3>Word の操作に関するPythonの外部ライブラリーも実はある件</h3>

<details><summary>ChatGPTに聞いてみた。3.5ですが・・(-_-;)</summary>

本屋とかAmazonでExcelを操作するための「Openpyxl（主な参考資料②参照）」本はよく見かけるし、ネットでもたまに聞いたことがあったのですが・・・もしかしてと思ってChatGPTで調べたら出てきました（:-O）
その名も「Document」の「docs」。しかし、参考資料等かなり少なく、ギャグではなく「Documentのドキュメント」を読むしかない状態なので、もし有用＆無償そうなら理解次第追記します。

一応以下のpipコマンドでインストールはできました。
```powershell
pip install Document
```
なお、ChatGPTが示してきたコードがこちら
```python
from docx import Document

doc = Document()
doc.add_heading('Document Title', 0)

doc.add_paragraph('Hello world!')

doc.save('document.docx')
```
GPTによると、Word文書の作成や編集、段落、テーブル、スタイルなどの操作ができるとありました。何らかの雛形を自動で作れる？？

</details>



<h1>主な参考資料</h1>

①今すぐ使えるかんたん　Excel マクロ＆VBA　技術評論社 門脇香奈子　著
<details><summary>Amazonリンク</summary>

https://www.amazon.co.jp/%E4%BB%8A%E3%81%99%E3%81%90%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93-Excel%E3%83%9E%E3%82%AF%E3%83%AD-Office-Microsoft-365%E5%AF%BE%E5%BF%9C%E7%89%88/dp/4297129701/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=87AM31OPUPGU&keywords=%E4%BB%8A%E3%81%99%E3%81%90%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93+excel+%E3%83%9E%E3%82%AF%E3%83%AD%26vba+%E6%8A%80%E8%A1%93%E8%A9%95%E8%AB%96%E7%A4%BE+%E9%96%80%E8%84%87%E9%A6%99%E5%A5%88%E5%AD%90+%E8%91%97&qid=1705239199&sprefix=%E4%BB%8A%E3%81%99%E3%81%90%E4%BD%BF%E3%81%88%E3%82%8B%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93+excel+%E3%83%9E%E3%82%AF%E3%83%AD+vba+%E6%8A%80%E8%A1%93%E8%A9%95%E8%AB%96%E7%A4%BE+%E9%96%80%E8%84%87%E9%A6%99%E5%A5%88%E5%AD%90+%E8%91%97%2Caps%2C281&sr=8-3
</details>

②【図解】Pythonのライブラリ 24選＋α
　https://qiita.com/python_academia/items/62aefbf4e373cd2aa496
  
  ※ここにある「Openpyxl」というExcel自動操作化のための外部ライブラリーは、以下のコマンドでインストールできます。
  ```powershell
  pip install openpyxl
  ```
③　最初からそう教えてくれればいいのに　PythonでExcelやメール操作を自動化するツボとコツが絶対わかる本　秀和システム社　立山秀利　著
<details><summary>Amazonリンク</summary>

https://www.amazon.co.jp/Python%E3%81%A7Excel%E3%82%84%E3%83%A1%E3%83%BC%E3%83%AB%E6%93%8D%E4%BD%9C%E3%82%92%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%99%E3%82%8B%E3%83%84%E3%83%9C%E3%81%A8%E3%82%B3%E3%83%84%E3%81%8C%E3%82%BC%E3%83%83%E3%82%BF%E3%82%A4%E3%81%AB%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC-%E7%AB%8B%E5%B1%B1%E7%A7%80%E5%88%A9-ebook/dp/B0BT1QS8D3/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=24T07X5GM8SX4&keywords=Python%E3%81%A7Excel%E3%82%84%E3%83%A1%E3%83%BC%E3%83%AB%E6%93%8D%E4%BD%9C%E3%82%92%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%99%E3%82%8B%E3%83%84%E3%83%9C%E3%81%A8%E3%82%B3%E3%83%84%E3%81%8C%E7%B5%B6%E5%AF%BE%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC&qid=1705239346&sprefix=python%E3%81%A7excel%E3%82%84%E3%83%A1%E3%83%BC%E3%83%AB%E6%93%8D%E4%BD%9C%E3%82%92%E8%87%AA%E5%8B%95%E5%8C%96%E3%81%99%E3%82%8B%E3%83%84%E3%83%9C%E3%81%A8%E3%82%B3%E3%83%84%E3%81%8C%E7%B5%B6%E5%AF%BE%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%AC%2Caps%2C205&sr=8-1
</details>


④　確かな力が身につくPython「超」入門　SB Creative社　鎌田正浩　著
<details><summary>Amazonリンク</summary>

https://www.amazon.co.jp/%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8FPython%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E7%AC%AC%EF%BC%92%E7%89%88-%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8F%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80-%E9%8E%8C%E7%94%B0-%E6%AD%A3%E6%B5%A9-ebook/dp/B09RSWHWKZ/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=33G7D2CE4DYAL&keywords=%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8FPython%E3%80%8C%E8%B6%85%E3%80%8D%E5%85%A5%E9%96%80+SB+Creative%E7%A4%BE+%E9%8E%8C%E7%94%B0%E6%AD%A3%E6%B5%A9+%E8%91%97&qid=1705239400&sprefix=%E7%A2%BA%E3%81%8B%E3%81%AA%E5%8A%9B%E3%81%8C%E8%BA%AB%E3%81%AB%E3%81%A4%E3%81%8Fpython+%E8%B6%85+%E5%85%A5%E9%96%80+sb+creative%E7%A4%BE+%E9%8E%8C%E7%94%B0%E6%AD%A3%E6%B5%A9+%E8%91%97%2Caps%2C211&sr=8-2
</details>

⑤HITACHI Inspire the Next RPA業務自動化ソリューション【コラム】VBAとマクロの違いとは？VBA・マクロができること、マクロの作り方を徹底解説！
https://www.hitachi-solutions.co.jp/rpa/sp/column/rpa_vol26/