【初学者】Access VBAって何？マクロやExcelとの違いを調べる

Accessを業務で扱う機会があり、恥ずかしながら扱ったことがなかったため、基本的な知識から調べてみました。

意外と知らなかった疑問なども、改めて知るきっかけとなりましたので、こちらに記録しておきます。



## Accessって何？
- `Access（アクセス）`とは、`Microsoft社`が提供する`データベースの管理ソフト`である。
- `Access`は`RDBMS（リレーショナルデータベースマネジメントシステム）`の一つである。つまり、データをテーブルとして管理する。


## Access VBAって何？
- `Access VBA`は、
- `VBA`は `Visual Basic for Applications`の略称である。
- `VBA`は`Microsoft Office`シリーズに搭載されているプログラミング言語のことを指す。
- Access VBAを使って開発を行う際は、`開発`タブの`Visual Basic`からアクセスできる（もしくは`Alt` + `F11`がショートカット）。
- 業務ではおそらくデータベースを取り扱うので、`SQL`の知見があると便利。




## AccessとExcelの違い

- ざっくりと以下のような違いで考えれば良い。
- Accessはデータベースを取り扱うソフト
- Excelは表計算を行うためのソフト



## Access VBAとExcel VBAの違い

- どちらもMicrosoft Officeソフトで使用するプログラミング言語である。
- `Excel VBA`は、Microsoft Officeシリーズの中でもExcelで使用できるプログラミング言語である。
- `Access VBA`は、Microsoft Officeシリーズの中でもAccessで使用できるプログラミング言語である。
- `Excel VBA`は、Excelの作業を自動化したりする際に使用する言語。
- `Access VBA`は、Accessの作業を自動化したりする際に使用する言語。


## VBAでできること

> - データの計算・操作
データの四則演算、行列操作、並べ替え、書式変更などの処理が可能です。
> - データの集計・分析
データの集計、分析、検索、置換などの処理が可能です。
> - ファイルの作成
テキストデータやCSVデータなどの外部ファイルの作成、読み込み、名称変更、保存、削除などの処理が可能です。
> - ウェブサイトよりデータ収集
API機能などを用いて、Webサービスから情報を取得して保存したりすることができる。

引用：案件評判BLOG
https://anken-hyouban.com/blog/2020/03/11/excelvba-accessvba/#the_post_3


## マクロとVBAの違い

- 関係性が高い両者だが、別物である。
- VBA = `Microsoft 365ソフト用のプログラミング言語`
- マクロ = `複数の操作をまとめて呼び出したり、プログラムを自動化するための機能`
- `マクロで便利な機能を作るためにVBAというプログラミング言語を使用する`といった考え方で良いだろう。
- 結局は`マクロとVBAをセットで考える場面`が多そうである（想像）。



## AccessとSQL Serverとの違い

- `Access`は`RDBMS`である。
- `SQL Server`は`Microsoft SQL Server`のことであり、これも`RDBMS`である。
- `SQL Server`は視覚的に操作できる`GUI`を採用している。
- `SQL Server`は小規模・大規模にも対応できるデータベースシステムである。
- `SQL Server`はネットワークで情報を管理していて、時間によってバックアップすることもでき、データの復元が可能である。
- `Windows`と同じ`Microsoft社`のシステムであるため、`Windows Server`で利用されることが多い。
- 【補足】：`Access を SQL Server に接続する`ことも可能なようだ。
- 【補足】：データベースの種類で言うと、他にも`Oracle`や`MySQL`、`PostgreSQL`などがある。
- 構文や式、コンポーネントなどの表記に違いがあるようだ。
- 明確な基準があるわけではないが、大規模データベースを構築したい企業ではSQL Serverを採用することの方が多いと思われる（想像）。
- 一方、`Access`はどちらかといえば、`一個人がPC上でローカルに使用するDBとして利用する`のに適しているようだ。

> 　まず、Ａｃｃｅｓｓは個人がローカルで使用するＤＢＭＳとしてメリットが大きい。ザックリとした特徴だが、以下のような点が考えられる。
> - デスクトップ上での動作をターゲットとしている。
> - ２ＧＢ未満データを　ローカルで扱うのに適している。
> - データベースと管理ツールが一体化している。
> - フォーム、レポート、クエリ、マクロなどの作成が容易である。
> - ＳＱＬＳｅｒｖｅｒに比べて少ない投資でシステム構築が可能な場合が多い。
> しかし、問題点としても以下のような点が考えられる。
> - 処理速度が遅い。（特に回線速度の遅い環境での利用時）
> - 複数人で使うと、データの競合が発生する。
> - 障害発生時の対処が困難である。
> - ＤＢが２ＧＢを超えたとき、ＤＢ分割が必要となる。
> - 情報漏洩、不正アクセスへの対処が難しい。

引用：<a href="https://www.shukuzawa.com/diary/daiary050725.html">ＤＢＭＳの選択について</a>


参考サイト：<a href="https://support.microsoft.com/ja-jp/office/access-sql-%E3%81%A8-sql-server-tsql-%E3%81%AE%E6%AF%94%E8%BC%83-f09f180f-c005-4ff3-812f-14a5eb7902c8">Microsoft サポート</a>

参考サイト：<a href="https://support.microsoft.com/ja-jp/office/access-%E3%82%92-sql-server-%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B-050d88f3-b2d6-4e76-b6f9-f3c556f139ea">Access を SQL Server に接続する</a>




## Accessの特徴

引用文
> - プログラマから見たAccessの利点の1つは、そのSQLとの相対的な互換性である。
> - クエリはSQL文として表示や編集ができる。
> - そしてSQL文はAccessのテーブルを操作するためにマクロやVBAモジュールの中で直接使用できる。
> - ユーザーはプログラムの形式と論理、そしてオブジェクト指向の可能性の提示のために、VBAと「マクロ」の両方を結合して使える。
> - SQL文の中ではVBAと同じ演算子や関数を用いることができ、モジュール内で定義された利用者独自の関数さえも使用できる。

引用：Wikipedia
https://ja.m.wikipedia.org/wiki/Microsoft_Access


- 複雑なコードを記述しなくてもデータベースの作成ができたりといった利便性もある。


> Microsoft Office Accessは、関係データベース管理システム（RDBMS）のひとつで、プログラマーでない人が使うアプリケーションとしての側面も強く、複雑なコマンドやコーディングをしなくても、データの追加や検索、変更、削除といった、データベースを作成・管理できるように工夫されています。

引用 Udemyメディア 
https://udemy.benesse.co.jp/business/office/intro-access.html




## Access VBAで出来ること

プログラミング言語であるため、これを使ってアプリケーションの開発ができる。
業務の自動化、簡略化、人件費削減など、Access VBAによる開発で、リソースの削減を実現できる（ざっくり）。

- 同じMicrosoftのソフトウェアであり、Excelから、データのインポートを行う。
- AccessからExcelへデータのエクスポートを行う。
- 決まったフォーマットで、レポートやドキュメントの自動生成する。
- APIなど、外部システムとの連携によってデータの取得ができる。



## Accessはどこで学習できる？
- <a href="https://accessvba.pc-users.net/">Access VBA 入門講座</a>
- <a href="https://www.udemy.com/courses/search/?src=ukw&q=Access+VBA">Udemy</a>
- <a href="https://www.youtube.com/results?search_query=Access+VBA+%E5%85%A5%E9%96%80">YouTube</a>




## 参考サイトまとめ

https://accessvba.pc-users.net/

https://hnavi.co.jp/knowledge/blog/access/#

https://ja.m.wikipedia.org/wiki/Microsoft_Access

https://udemy.benesse.co.jp/business/office/intro-access.html

https://data.wingarc.com/about-macro-25915

https://jp.linkedin.com/learning/access-vba-essential-training/689420

https://www.sk-access.com/mailmaga/vol278.html

https://www.shukuzawa.com/diary/daiary050725.html