VBAやってみる

# サマリ
エクセルでVBAを少し触ってみましたのでその記録です。

:::note warn
注意
初めてなので特に深い内容はなく本当に触りだけです
:::

# 背景
たまたまMicrosoft365を契約する機会があったので、
せっかくであればVBAを触ってみようと思ったのがきっかけです。

# ゴール
エクセルでVBAを触ってみて簡単なサンプルコードを試してみる。

# 対象読者
- VBA触ったことがないは試してみたい方

# 前提
必須：Microsoft Office製品（今回だとExcel）
推奨：VBAについての知識（自分は一切なしでした）

# 環境
- ホストOS：Window10 Home

# 手順
### そもそも
あまり知識がなかったので、前提知識について少しググってみました。

#### Microsoft365とは
[公式HP](https://www.microsoft.com/ja-jp/microsoft-365/what-is-microsoft-365)によると、

> Microsoft 365 は、ユーザーがより多くのことを達成できるように、革新的な Office アプリ、インテリジェントなクラウド サービス、最高水準のセキュリティをひとつにまとめたソリューションです。

とのことです。
ちょっとピンとこなかった（失礼）のですが、
ExcelやPowerPointなどのOfficeアプリを提供していた従来のOffice365というサブスク型のサービスに
セキュリティ機能などやそのほか追加のアプリを追加した上位互換のようなサービスのようです。

2020年に、Office365からMicrosoft365に名称変更したとのことです。by[Wiki先生](https://ja.wikipedia.org/wiki/Microsoft_365)

したがって、
（別々で存在しているサービスかと思っていたのですが）Office365とMicrosoft365は旧・新の関係ということですね。

ここではこれ以上触れませんが、具体的にどのようなアプリが含まれているのかを参考につけておきます。
以下は家庭向けのプランです。

https://www.microsoft.com/ja-jp/microsoft-365/buy/compare-all-microsoft-365-products?&activetab=tab:primaryr1

#### VBAとは
以下のサイトがマクロとの違いも触れていてわかりやすかったです。

https://www.hitachi-solutions.co.jp/rpa/sp/column/rpa_vol26/#:~:text=%E8%B3%87%E6%96%99%E3%83%BB%E3%82%BB%E3%83%9F%E3%83%8A%E3%83%BC%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-,VBA%E3%81%A8%E3%81%AF,%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82

> VBAは、「Visual Basic for Applications」の略語で、ExcelやPowerPointといったMicrosoft Officeのアプリケーションの機能を、拡張することができるプログラミング言語のことです。

> マクロは、アプリケーションソフトであらかじめ操作手順を設定しておくことによって、必要なときに簡単に実行させることができる機能のことです。

> 上で述べたとおり、VBAはプログラミング言語であるのに対して、マクロは機能です。マクロを作成するためには、アプリケーションごとに異なるプログラミング言語を用います。そしてOfficeアプリケーションであるExcelのマクロ機能を使うために、必要になるプログラミング言語というのがVBAなのです。そのため両者は同じものとして混同される場合が多くありますが、厳密には異なるものです。

VBAはプログラミング言語、マクロは一連の操作をまとめて記憶・実行させる機能ということですね（要約になってないぞ）

恥ずかしながら今まで触ったことがなかったのでこれでかなりイメージが付きました。
それでは実際に触ってみます。
今回はエクセルでやってみます。

### 準備１：開発タブの表示
まずは開発タブを表示させます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/59ffa140-2238-1a47-f61b-2a13fb57aa2d.png)

デフォルトでは開発タブがないので…
まずは左上の「ファイル」を選択し

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/0b749e47-84d4-8017-6317-ddd29def2dfb.png)


下の「オプション」を選択

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/6b39c758-52f5-b123-24da-90ca51a974ae.png)

「リボンのユーザ設定」の「開発」にチェックを入れます。

![test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/2bd68557-765a-242f-8bb5-9ffb12ca61bb.png)

これで開発タブが表示されます。
（再起動などせずとも即時で反映されます）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/4b7ba11a-cdf9-f503-32fa-ebcd4c12f639.png)

### 準備２：ファイル形式の変更

ファイルはマクロを実行できる形式（xlsmの拡張子）で保存をする必要があります。
ちょっと試すだけなど特にファイル保存しない場合（そんなケース少ないと思いますが）は、xlsmにしなくてもVBAの実行自体はできますが
基本はファイル保存するかと思うので、先に変更しておきます。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/dedd39c9-c133-7265-f16a-2ad31354020e.png)

ちなみに、マクロ作成後に通常のファイル形式（.xlsx）で保存しようとすると以下のようなエラーが出ますので、
最初にしておかなくても後々忘れず対応はできると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/9620fa2b-1afb-f2b5-5736-4e9b351982c6.png)


### VBAの編集１：セルに文字入力
準備が出来たら実際にVBAを編集していきます。
左上Visual Basicか、`Alt+F11`を押します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/379f0e76-d6e0-7bb0-ba35-66c47dc7fafe.png)

編集画面が開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/4f65756f-e60a-e585-2a0a-a51ad8c42c02.png)

プロジェクトの白枠の中で右クリック→挿入→標準モジュールを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/5c340818-8add-747e-0db5-9e7bcb8d448f.png)

ちなみに、モジュールについてはこちらでわかりやすくまとめていただいています。

https://www.sejuku.net/blog/94341

基本は標準モジュールでよさそうです。
（この辺はまたやりたいことに合わせて勉強します。。）


エディタが開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/7d58c473-ec69-6548-1a96-3cc1330db292.png)

テストとして適当に書きます。
A1セルにテストと表示するものを書きました。

実行する際は、F5の押下または右向き三角をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/781c801b-f035-0b18-95ea-eae161218801.png)

マクロ名の確認が出てきます。
そのままで実行を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/bafa7a67-42e6-5cfb-f88d-beab01aa90e0.png)

A1に文字が入力されました。（おぉ～）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/6c9425cf-5afb-eda7-71d3-a3e3703790c5.png)



### VBAの編集２：Wordに表を貼り付け
他にも試してみます。

エクセルの表をWordに張り付けることもできるんですね～（知らなさすぎ）
今回はこちらのサイトのコードを使わせていただきました。

https://www.sms-datatech.co.jp/column/aut_macro-list/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/39d02637-d52a-3b0e-1aa6-d28adb20c4a0.png)

実行すると、Wordが自動で開き、A1～D10までのセルがコピーされました。
すごい…！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/64129e64-2a25-0940-71f5-2f56c7961a13.png)


今回は時間の関係で（なんの時間やねん）ここまでにしたいと思います。


# 参考
よく使いそうなコード一覧をまとめてくださっているページも一つ紹介させていただきます。

https://excel-ubara.com/excelvba5/

VBAの関数一覧が載っているページも一つ紹介させていただきます。

https://excel-ubara.com/EXCEL/EXCEL903.html

今までVBA使ったことはなかったですが、いろいろできそうですね…！

# 結果
VBAを実行するまでの手順確認と、簡単な操作を試してみました。

# 学び
今回はエクセルですが、
単にセル操作だけでなくほかのアプリを起動して操作したりすることもできるので、
思っていた以上に結構なんでもできることがわかりました。（ざっくりしすぎ）

# まとめ
大事なのは何をやりたいか、どう効率化したいかだと思うので、
今やっている業務に照らしつつ今後活用していきたいと思います。