1

マクロを使用して、Access データベースから Excel ワークシートにデータを抽出します。最初にデータベースへの接続を開き、SQL ステートメントを文字列 var で定義してから、そのデータをレコードセットにダンプします。

Dim db As Database
Dim rs As RecordSet
Dim sql As String
Dim dbLocation As String

dbLocation = ThisWorkbook.Path & "\database\data.accdb"
Set db = OpenDatabase(dbLocation)
sql = "Select * FROM [Master Table]"
Set rs = db.OpenRecordSet(sql, dbOpenSnapshot)

If Not rs.EOF Then
   Worksheets("Sheet1").Range("A1").CopyFromRecordset rs
End If

rs.Close
Set rs = Nothing
db.Close
Set db = Nothing

これは完全に機能します。これを何人かの人に配布して、フィールドを更新するように依頼します。次に、返されたデータで Access データを更新する必要があります。設計上の単純なことは、抽出された Excel データがアクセス データベースの構造を反映しているため、更新クエリが単純になることです。また、主キーがあるので、そのフィールドにマップする必要があります。

これを行う方法はありますか?Excel データシート全体をレコードセットにロードして、洗練された更新クエリを実行できますか?

4

2 に答える 2

0

DAOを使用したshibormotのソリューションの拡張:

Set objConnection = CreateObject("DAO.DBEngine.36")
Set db = objConnection.OpenDatabase(strDBPath, blnExclusive, blnReadOnly, strPassword)

For Each row In Range("A1:C3").Cells
    strSQL = "UPDATE table SET "
    strSQL = strSQL & "Field1 = " & Chr(34) & row.Cells(1) & Chr(34) & ","
    strSQL = strSQL & "Field2 = " & Chr(34) & row.Cells(2) & Chr(34) & ","
    strSQL = strSQL & "Field3 = " & Chr(34) & row.Cells(3) & Chr(34)
    Db.Execute
Next

文字列データ用に chr(34) を投入

于 2013-04-03T23:24:10.940 に答える