Access 2003を所持しています。ExcelデータをAccessのテーブルにインポートしたいと思います。
インポートウィザードでインポートをすることはできました。
そしてプライマリーキーを設定します。
その後、同じExcelをインポートする時に、既にインポートされているものは、UPDATE、プライマリーキーがExcelにないものはInsertする。
といったような事が実現できないかなと思っています。できないようであれあば、Access 2010など最新のものではそのような事が可能になっているでしょうか?
もしできないようであれば、それが実現できるソフトウェアが欲しいと思っています。
つまり、欲しいソフトウェアはDBMS。Excelをインポートできる。条件によってinsert,updateができる。
といったものです。よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
#2です。
あるいはまったく視点を変えて、Excelから直接Accessの
データを更新、追加することではどうでしょうか。これならば
いちいちAccessを開いて更新、追加をすることはありません。
一応、クエリは
http://oshiete1.watch.impress.co.jp/qa6393593.html
で作成したクエリとします。
AccessからExcelのシートをリンクテーブルとして
リンクしている場合とします。
Accessの標準モジュールに、以下を
設定します。
Sub cmdUp()
DoCmd.OpenQuery "更新クエリ"
End Sub
Sub cmdInsert()
DoCmd.OpenQuery "追加クエリ"
End Sub
つづいて、Excelの標準モジュールに以下を
設定します。
Sub cmdTest()
Dim appAccess As Access.Application
Dim strPath As String
Set appAccess = CreateObject("Access.Application")
strPath = "D:\sample.mdb"
' appAccess.AutomationSecurity = msoAutomationSecurityLow
appAccess.OpenCurrentDatabase (strPath)
appAccess.Run ("cmdUp")
appAccess.Run ("cmdInsert")
' appAccess.AutomationSecurity = msoAutomationSecurityUI
appAccess.Quit
Set appAccess = Nothing
End Sub
Access2003の環境が無いので、AutomationSecurityプロパティの設定
が必要ならば、コメントアウトした部分のコメントアウトを解除して
ください。
参照設定でMicrosoft Access xx ObjectLibraryのチェックを
確認します。
このマクロをシート上でにボタンを設置しマクロを
呼び出すようにするか、あるいはマクロの実行から
マクロを指定して実行します。
No.3
- 回答日時:
mshr1962さんも言われているように、Accessのインポートウィザードでは
「Insert」のみで、「Update」には対応していないかと思います。
(手持ちの中では最新になるAccess2007では、Access2003とほぼ同様:
インポート作業そのものに名前をつけて保存するオプションの追加はあり)
あいにく、Access以外のデータベースについてはわかりませんが(汗)、
先日の以下のご質問の際にご紹介したように、Excelファイルへのリンクを
作成した上で、
http://oshiete.goo.ne.jp/qa/6392978.html
以下のような手順を踏めば、Accessでも実質的にご希望に適った処理が
可能かと思います。
1)「インポート先となるAccessテーブル」(Aとします)と、「インポート元となる
Excelへのリンクテーブル」(Bとします)から、『Aテーブルから、両者の間で
プライマリーキーが一致するレコードをDeleteする【削除クエリ】』を実行
2)『Bテーブルの全レコードをAテーブルに追加する【追加クエリ】』を実行
(または、インポートウィザードを実行してもOK)
つまり、Updateの対象となる既存のレコードを予め削除してしまうことで、
Excel側の全レコードをInsert(またはImport)できるようにしてしまう、という
ことです。
Deleteは件数が多くても実行速度は速いのと、「Update&Insert」では
それぞれ対象レコードの限定が掛かることなどから、「Delete&Insert
(又はImport)」の方が迅速に処理されるものと思います。
No.2
- 回答日時:
以前私が回答した続きならば、以下のようにします。
Private Sub ボタン_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery ("更新クエリ")
DoCmd.OpenQuery ("追加クエリ")
DoCmd.SetWarnings True
End Sub
他のAccess関連のQ&Aサイトでも似たような
返答になると思います。VBAで一つ一つの
レコードを比較しながらやっていてはレコード数が
大量になれば当然ながら膨大な時間がかかるのは
当たり前です。なお、Excelのシートをリンクして
テーブルとして接続するというのはおわかり
だと思いますが。
回答後、補足なしに締め切られたのでその後の
経過がまったくわかりません。もし、データ数が
多く、更新追加に時間がかかるということであれば
SQL Serverを導入し、データ管理をそちらで行っては
どうでしょうか。
しかし、どちらにせよSQL文を同様にExcelからSQL Server
に実行することには変わりはありません。
もう一つは、Web上にいくつかの有償ツールがありますが、
性能のほどはわかりません。中でやっていることは
似たようなものだと思いますが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- その他(データベース) ファイルメーカーへネットワーク上のexcelデータを開く 1 2023/06/28 20:08
- Access(アクセス) accessデータを指定したExcel、そして指定したセルへエクスポートするaccess VBAコー 2 2023/05/17 17:02
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- ゲーム 至急お願いします! プレステ4のウイイレ2021やっていていわゆるあの神データをUSBで持っていてい 1 2022/05/01 00:20
- Windows 10 Windows11の初期設定を行ったのですが、 ずっと「対応が必要です」「Googleでは、引き続き 1 2023/07/09 21:40
- Chrome(クローム) ブラウザのブックマークの同期の仕方についてお尋ねします。 1 2022/08/10 16:44
- その他(ゲーム) 至急お願いします! プレステ4のウイイレ2021やっていますがあのいわゆる神データを持っていてUSB 1 2022/04/29 15:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセス:クエリの結合とリレ...
-
ACCESSでの別のテーブルのデー...
-
ハイパーリンクの抽出・印刷に...
-
ACCESSで2種類に分類してカウン...
-
アクセス クロス集計クエリ→テ...
-
access テーブル作成クエリでテ...
-
accessでクエリの結果だけをリ...
-
アクセス VBA クエリSQL文変更
-
更新不可能なクエリに対して更...
-
ACCESSの指導書でベストは?
-
access2010 テーブル作成クエリ...
-
教えてください! アクセスのac...
-
access2003で軽快な検索クエリ...
-
access インポート時、既にある...
-
Accessでのインポート時アップ...
-
ACCESSのテーブル作成クエリに...
-
Access テーブルAにテーブル...
-
在庫管理と賞味期限管理
-
日付型のフィールドに空白を入...
-
accessvba 複数条件でFilterを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
クロス集計クエリの結果をテー...
-
アクセス 項目毎にデータを横...
-
クエリのデータをテーブルに入...
-
Access「レコードが削除されま...
-
アクセス:クエリの結合とリレ...
-
accessでクエリの結果だけをリ...
-
access インポート時、既にある...
-
教えてください! アクセスのac...
-
デザインビューにてテーブルが...
-
アクセスのクエリでSplit関数は...
-
更新不可能なクエリに対して更...
-
ACCESSで行数指定(5万行目~8...
-
access テーブル作成クエリでテ...
-
Accessのクロス集計→テーブル作...
-
ACCESS テーブル作成の日付付与...
-
ACCESSでの重複レコードの削除
-
アクセス クロス集計クエリ→テ...
-
アクセスで新しいレコードの追...
-
ACCESS2000 クエリをテーブル化...
-
Access2010「クエリが複雑すぎ...
おすすめ情報