人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

テーブルにデータがあればアップデート、無ければインサートという作業をおこないたいです。例えばExcelに列ID,Name,Addressがあるとします。Accessのテーブル、TableにIDとNameの2つをキーとして、テーブルにIDとNameのキーがなければインサート、有ればアップデートという作業をおこないたいです。Excelからテーブルへのアップデート、インサート方法は理解してコードを書けるのですが、上記の処理方法がわかりません。ご教授お願いいたします。VBAです。

●質問者: akaired
●カテゴリ:コンピュータ
✍キーワード:access Excel name VBA アップデート
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●120ポイント ベストアンサー

ACCESS は table1 というデータベースに id(整数型), name(文字列型),data(文字列型)

EXCEL(import.xls) の2行目からデータがあり、A列:id、B列:name、C列:data

があるという前提でのACCESS での VBAサンプルです。

Option Compare Database
Option Explicit

Const EXCEL_DATA_FILE = "C:\Data\import.xls"

Sub importExcel()
 Dim oApp As Object

 Set oApp = CreateObject("Excel.Application")
 oApp.Visible = True
 oApp.workbooks.Open FileName:=EXCEL_DATA_FILE

 Dim i As Long
 i = 2
 Dim condition As String
 Do While oApp.cells(i, "A").Value <> ""
 condition = "[name]='" & oApp.cells(i, "B").Value & "' AND [id]=" & oApp.cells(i, "A").Value
 CurrentDb.Execute makeQuery(oApp, i, IsNull(DLookup("[id]", "table1", condition)))
 i = i + 1
 Loop
 oApp.workbooks(1).Close
 oApp.Quit
End Sub

Function makeQuery(oApp As Object, rowNum As Long, queryMode As Boolean) As String
 If queryMode = False Then
 makeQuery = "UPDATE table1 SET [data]='" & oApp.cells(rowNum, "C").Value & "'"
 makeQuery = makeQuery & " WHERE [id]=" & oApp.cells(rowNum, "A").Value
 makeQuery = makeQuery & " AND [name]='" & oApp.cells(rowNum, "B").Value & "'"
 Else
 makeQuery = "INSERT INTO table1 ( [id], [name], [data] ) VALUES ("
 makeQuery = makeQuery & oApp.cells(rowNum, "A").Value
 makeQuery = makeQuery & ", '" & oApp.cells(rowNum, "B").Value & "'"
 makeQuery = makeQuery & ", '" & oApp.cells(rowNum, "C").Value & "' );"
 End If
End Function

http://www.accessclub.jp/bbs6/0007/das1795.html

◎質問者からの返答

ご回答ありがとうございます!助かりました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ