🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1623閲覧

EXCEL ←→ ACCESS 間のデータ接続の考え方

u_zu

総合スコア52

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/01/08 16:10

編集2021/01/09 00:02

EXCELからACCESSのデータ、もしくはACCESSからEXCELのデータを参照したり更新したりする場合に
好ましい、もしくは××の場合は△△の接続が望ましい、といった使い分けはあるのでしょうか?

仕事で使用している業務ソフト(ACCESSで構築されていてEXCELファイルを参照しています)では
ACCESSからEXCELを参照(更新)する際に

Dim cc As ADODB.Connection Set cc = New ADODB.Connection Dim In1 As ADODB.Recordset Set In1 = New ADODB.Recordset With cc .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=(パス名) & ";" & _ "Extended Properties='Excel 12.0; HDR=NO; IMEX=1'" .Open End With mySQL1 = "SELECT * FROM [……]" cmd.ActiveConnection = cc cmd.CommandText = …… Set In1 = cmd.Execute

のようにADOを使っているのですが、

Dim xlApp as object Dim xlBook as object set xlApp = CreateObject("Excel.Application") set xlBook = xlApp.Workbooks.Open(パス名) '------処理-------- xlBook.Close Set xlBook = Nothing xlApp.Quit Set xlApp = Nothing

のように CreateObjectを使ってもExcelファイルの中身を
参照、更新できると思います。

その他にもDAOでもできると思います。

また、上記とは反対になりますが、EXCELからACCESSを参照、更新する場合でも

1.CreateObjectを使う
2.ADO
3.DAOでOpenDatabaseメソッドを使う

とどれでも出来ると思います。

何か、使い分け?のようなものがあるのでしょうか?それとも単に好みの問題なのでしょうか?

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/01/08 23:26

ソースコードが読みづらいので質問を編集し、<code>をクリックしたら表示されるバッククオートで囲まれた部分に貼ってください。
u_zu

2021/01/09 00:03

すみません 編集しました
hihijiji

2021/01/09 02:32

後者はExcelのプロセスを立ち上げますので、印刷やフォーマットの変更などExcelの機能が 使える代わりに重たくなります。 前者で事足りる処理なら前者で良いと思います。
u_zu

2021/01/09 09:18

なるほど。参考になります。
guest

回答1

0

ベストアンサー

Access で Excel のデータをいじる場合を想定して回答します。
大まかに ①Excel.Application を使う場合と、②ADO/DAO を使う場合とで大別できます。


まず、Excel.Application はその名の通りエクセルの本体です。
これをオートメーションで操作することになります。COMの技術ですね。

Worksheet や Workbook なんかはこのアプリケーションの配下に存在するので、
Excel.Application を通じてこれらのオブジェクトを操作することが可能です。


次、ADO/DAO ですが、これはそれぞれデータベース向けのAPIです。

DAO は Access とか Jet とかに最適化されているので、
Access での利用のみを想定するのであれば DAO はおすすめです。

ADO は DAO を少し簡略化したものです。
なお、ADOX 等のオブジェクトモデルを利用すれば DAO と遜色ない使い勝手です。

物にもよりますが、他の DB を利用する想定であれば ADO の方がパフォーマンス面がよい場合があります。
SQLServer なんかは ADO の方がいいです。

結論
①と②は完全に別物です。
①はエクセルを操作します。
②はデータベースを操作します。

②について、ADO と DAO の利用上の違いは微々たるものです。
どっちかでできることは大体もう一方でもできます。
細かい仕様について知りたいのであればググるのが最適です。

強いて言うなら、ADO でできることは DAO でも大体できますが、
DAO でできることが ADO でできるかは明言できません。

使い分け方は、どういった環境でどのような使い方をするかの問題ですが、
ぶっちゃけ好みでどっちか一方使えればいいと思います。

そもそも、この辺りを理解していないなら本当に何を使ってもいいと思います。
やりたいことができるのであれば。

細かい仕様を気にする様になれば勝手に最適なものを選ぶ様になると思います。

投稿2021/01/12 05:21

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2021/01/12 14:59

どうもありがとうございます、参考になります。 他のアプリケーションを使う予定、についてはOffice製品のみですね。EXCELとACCESSのみです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問