Accessへのエクセルデータインポート
Accessへのエクセルデータインポート
環境:Access2000/WinXP
アクセス2000の特定テーブルへ、エクセルデータをインポートするよう組んだのですが、新しくデータを追加すると、これより前に入っていたデータがレコードを残して消えてしまいました。
新規データを追加した際にただの追加としたいのですがどこがおかしいのでしょうか。
Private Sub データ登録_Click()
Dim objExcel As Object
Dim varFilePath As Variant
Dim bln As Boolean
Dim varac As Variant
Dim varxls As Variant
Dim strrange As String
Dim strmsg As String
varac = "受講者情報一覧"
Set objExcel = CreateObject("Excel.Application")
varFilePath = objExcel.GetOpenFilename("Microsfot Exel (*.xls), *.xls", , "xls選択")
If varFilePath <> False Then
varxls = varFilePath
Else
Exit Sub
End If
Set objExcel = Nothing
varxls = varFilePath
strrange = ""
strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & "へ、インポートします。"
DoCmd.DeleteObject acTable, varac
If MsgBox(strmsg, vbOKCancel) = vbOK Then
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, varac, varxls, True
MsgBox "正常にインポート完了しました。"
End If
Exit Sub
エラー:
MsgBox "予期せぬエラーが発生しました。" & Chr(13) & "エラー番号:" & Err.Number & Chr(13) & _
"エラー内容:" & Err.Description, vbCritical
Exit Sub
End Sub
お礼
redfox63 様 早速の回答ありがとうございます。 やはり、レコードセットとフィールドをそれぞれループする方法でやってみようと思います。 上記ロジックより実行した場合に、実行時エラー:3251 「<--実行時エラー 3251: アプリケーション定義またはオブジェクト定義のエラーです。」が発生してしまいます。 なぜなのでしょうか!? mdbRes.の後に選択候補としてAddNewはありました。 以下ロジック 'Excel用レコードセット Set dbRes = New ADODB.Recordset dbRes.CursorLocation = adUseClient dbRes.Open strSQL, cnn, adOpenForwardOnly, dLockReadOnly 'Access MDB用レコードセット Set mdbRes = New ADODB.Recordset mdbRes.Open tablename, cnn_Mdb, adOpenForwardOnly,adLockReadOnly dbRes.MoveFirst mdbRes.MoveFirst Do While Not dbRes.EOF mdbRes.AddNew '<--実行時エラー 3251: アプリケーション定義またはオブジェクト定義のエラーです。 For n = 0 To dbRes.Fields.Count - 1 mdbRes(n).Value = dbRes(n).Value Next mdbRes.Update dbRes.MoveNext Loop