質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Access

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

Q&A

解決済

3回答

1277閲覧

ExcelVBAから接続しているaccdbファイルをsqliteファイルと交換したい

neet_studier

総合スコア21

VBA

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Access

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

0グッド

2クリップ

投稿2018/08/22 19:14

よろしくお願いいたします。

現在、ExcelVBAで作ったxlsmからaccdbファイルのテーブルのレコードを読んだり追記したりするシステムを使っています。
オフィス内の中心的PCにaccdbファイルを置き、LANで繋がっている他の複数のPCにコピーしたExcelファイルからそれぞれ、その一つのaccdbファイルにアクセスして使っている状態です。
このシステムの使用者は、ExcelVBAで作られたexcelファイルを開いているとしか認識しておらず、その奥にAccessファイルがあることも、意識していません。また、accdbファイルにはいくつかのテーブルしかなく、レポートやフォームはもちろん、アクションクエリなどもありません。

現在、ネットで見た情報から、もともとAccessはスタンドアロンでの使用を想定されており、複数の同時アクセスには脆いと知り、また、accdb内のテーブルのレコード数が今後、十万を超す可能性もあることがわかり、この点でも不安なため、この際、accdbファイルをSQLiteのファイルに交換しようかと考えています。(SQLserver等の、もっと大がかりなDBシステムの導入は考えられません。単純なファイルの移動やコピペ程度の「インストール」作業しかできない場所でも使うので)

そこで、自分なりに、accdbとsqlite3の交換について調べてみました。以下列挙しますので、誤解や認識不足等があればご指摘ください。

(1)現行のaccdbファイルにあるのと同じ名や構造のテーブルを用意するなら、sqliteファイルとの交換は容易である

(2)このような形でSQLiteファイルを使用するだけなら、各PCにはソフトのインストールの必要がなく、その意味でも、単純にaccdbファイルと置き換えるだけでよいので、単純な交換作業で住むし、特にユーザーの操作に影響を与えることもない

(3)ExcelVBAについても、以下のような、accdbファイルと接続する既存の部分の命令を書き換えるだけでよく、レコード編集に関わる部分は書き換える必要もない

acf = accdbのパス conStr = "Provider =Microsoft.ACE.OLEDB.12.0;Data Source = " & acf con.Open (conStr)

(4)問題があるとすれば、accdbファイルには、パスワードで保護することができるが、sqliteファイルにはそれができないので、コピーして持ち出された場合のダメージが大きいという点くらい(現行、accdbファイルを直接開いてもテーブルの中は見られない程度の保護があります)

以上です。
どうでしょう?
認識が甘すぎるでしょうか?

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

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

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

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

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

guest

回答3

0

SQLに、Access独自の構文を使っている可能性があるので、
確認しないと差し替えた後で動かない、という事もあるかもですね。

後は置き換え可能だとして、エラー時の取り回しの差など、
実際に動かして試す必要があるのではないでしょうか。

投稿2018/08/23 00:54

ExcelVBAer

総合スコア1175

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

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

neet_studier

2018/08/24 06:54

ご回答ありがとうございました。 甘いものじゃないんですね。
guest

0

SQLiteも共有には不向きです。
AccessならSQLServerへの切替が一番手間が掛からないかと思います。
アップサイジング ウィザードを使用して Access データを SQL Server データベースに移動する
SQLServerExpressなら基本無料(確認はして下さい)ですし。

但し、DBMSとしての管理という事だと、オープンソースのRDBMS(Postgres,MySQL)も視野に入れた方が良いかもしれませんが、ここら辺は好みもあるかもしれません。

投稿2018/08/23 00:12

sazi

総合スコア25138

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

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

neet_studier

2018/08/24 06:55

ご回答ありがとうございました。 勉強になりました。
guest

0

ベストアンサー

SQLiteはそういう使い方に向かないと思います。

SQLiteの適切な使い方 - kandamotohiro

正しいおおまかな規則は、同じデータベースがネットワークを通して、多くの計算機から直接に(アプリケーションサーバが途中に入ることなく)、同時に、アクセスされるならば、SQLite を使うのを避けることです。

また、ExcelからADOでSQLiteを使用するためには各PCにドライバー(SQLite ODBC Driver)のインストールが必要になりますし、レコード操作のコードも、大抵の場合は変更する必要があるでしょう。

投稿2018/08/22 21:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

neet_studier

2018/08/24 06:57

ご回答ありがとうございました。 sqliteを過大に考えていました。 勉強になりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問