質問: VBAを使ったaccessとExcelの連携について教えてください。 VBAのユーザーフォームで、accessデータベースを更新できるボタンを設置したいです。
回答: こんにちは。 エクセルvbaから、データの更新をするのですから、 パソコンにはadodbのデータ接続環境をインストールしてあること adoでのデータ処理のサイトで、接続の方法とSQLによって「更新データの選択」を開き、for nextによってレコードをアップデートするながれを確認してください アクセスのファイルを、単なるdbのテーブル扱い、ということになります。 >・ID一致箇所があれば、更新されている内容をaccessデータに上書き >・IDが一致しなければ、新規登録扱いとし、accessデータに新規追加 ここですが、アクセスのデータで、IDの列だけをエクセルシートに読み込みさせても、問題なくできるようであれば、 1) アクセスからIDだけを全部読み込み。 2) エクセルデータに、match関数である、なしの判定をさせる。 3) エクセルのデータを反映させるループでは、 match関数の結果を使い、更新の場合は、更新モードでSELECTしてから updateをする。 新規の場合、更新モードのオープンのあとaddnewで1レコードを追加更新、閉じる というループになります。 IDを読み込みしないで、というのでしたら、 1) IDを指定してselectオープンして、eofなのかを判定し、 eofでなかったら、レコードの更新、eofだったら、 addnewをして、レコードの更新する、という流れとなります。 idが「インデックスを作成している」というようにデータベースができていたら、時間は大差ありませんが、もし、インデックスがない場合、時間はかかるようになります。 まずは、エクセルがadoでデータ接続する部分までができるようになるか、確認してください。