こんにちは。
EXCEL2013からACCESS2013へデータを更新するvbaについて質問させてください。
https://infith.com/system/access/excel_access_ad …
こちらを参考にマクロを設定しました。
ACCESS テーブル名:T商品マスター
更新するためのフィールド:商品コード
EXCEL アクティブシートにあるA~C列2行目から最終行まで
変更した箇所
strSQL = "SELECT T商品マスター.* FROM T商品マスター "
strSQL = strSQL & "WHERE T商品マスター.商品コード = " & CLng(.Cells(i, 1).Value) & " ;"
これを実行すると↓の部分でデバックになり、
抽出条件が一致しません、と表示されてしまいます。
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenKeyset, adLockOptimistic
おそらく変更した箇所の書き方が違うのかなと思ったのですが
自分ではいくら考えてもわからず、よろしくお願いします。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Sub DB_Write()
Dim adoCON As New ADODB.Connection
Dim adoRS As New ADODB.Recordset
Dim strSQL As String
Dim odbdDB As Variant
Dim wSheetName As Variant
Dim i As Integer
Dim wLastGyou As Long
'カレントディレクトリのデータベースパスを取得
odbdDB = "C:\***\Desktop\売上管理.accdb"
'データベースに接続する
adoCON.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & odbdDB & ""
adoCON.Open
'トランザクション開始
adoCON.BeginTrans
'アクティブなシート名を取得
wSheetName = ActiveSheet.Name
With Worksheets(wSheetName)
'最終行番号を取得
wLastGyou = .UsedRange.Rows.Count
'Excelの一覧を読み込みAccessに書き込む
For i = 2 To wLastGyou
'商品コードの数値チェック(数字の場合は処理を実行)
If .Cells(i, 1).Value <> "" Then
'DB接続用SQL
strSQL = "SELECT T商品マスター.* FROM T商品マスター "
strSQL = strSQL & "WHERE T商品マスター.商品コード = " & CLng(.Cells(i, 1).Value) & " ;"
'カーソルをクライアント側に設定
adoRS.CursorLocation = adUseClient
'レコードセットを開く
adoRS.Open strSQL, adoCON, adOpenKeyset, adLockOptimistic
'入力された商品コードと同一のレコードが無い場合は新規登録
If adoRS.EOF Then
adoRS.AddNew
adoRS!商品コード = CLng(.Cells(i, 1).Value)
End If
adoRS!商品コード = .Cells(i, 2).Value
adoRS!商品名 = .Cells(i, 3).Value
adoRS!単価 = .Cells(i, 3).Value
adoRS.Update
'レコードセットを閉じる
adoRS.Close: Set adoRS = Nothing
End If
Next i
End With
'トランザクション終了
adoCON.CommitTrans
'ADOコネクションオブジェクトのクローズ処理
adoCON.Close: Set adoCON = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
>T商品マスター.商品コード
がどんなデータ型なのかシートのA列がどうなっているのかがわかりませんけど、コード的には『ともに数値』であることが条件ですよね?
商品コードなので『A0001』とか『00225』とかの『文字列(数字≠数値)』ではないですか?
仮にそうなら、
strSQL = strSQL & "WHERE T商品マスター.商品コード = '" & .Cells(i, 1).Text & "' ;"
とかになるかもですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) VBAでのループ順序について 3 2023/03/13 10:55
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBA 税率を判定表する方法を教えて下さい。 10 2022/03/28 11:21
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
"スレスレ" "ギリギリ" を丁寧...
-
ブルートゥースの空気(英語に変...
-
「新商品」と「リニューアル商...
-
白いTシャツの日焼けあとをとる...
-
タマリンドとガルシニアは、同...
-
岩田のエアブラシCM-CP2とCM-CP...
-
これってねずみ講?
-
スギ薬局でクロックス風のが売...
-
雑誌の後ろのほうにある・・・
-
エクセルで交換予定時間、納品...
-
カールアイロン安物じゃダメ?
-
訪問販売の化粧品の販売員について
-
エクセルを使って、商品管理を...
-
Safariでビジターアンケート参...
-
excel VBAで、置換した結果を別...
-
ヤマダ電機OP!先着商品をゲッ...
-
アディダスはなぜ、デサントと...
-
卒論2年連続で落ちています。 ...
-
一物二価っていけないいんですか。
-
ナチュラリープラスの会員に1年...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
"スレスレ" "ギリギリ" を丁寧...
-
「新商品」と「リニューアル商...
-
添加物や経皮毒
-
paidyってきてから払ったんで良...
-
excel VBAで、置換した結果を別...
-
シュガーレディーの無料試食会...
-
Safariでビジターアンケート参...
-
セブンイレブン無料引換券の対...
-
皆さんなら現品限り(展示品)の...
-
スギ薬局でクロックス風のが売...
-
エクセルを使って、商品管理を...
-
「売れ筋」に対して???
-
キツネみたいなブランドの名前...
-
持ち運びできるクーラー探して...
-
エクセルで交換予定時間、納品...
-
スーパーなどの商品について
-
統計:アンケート結果の読み解...
-
株式会社エリナの取扱商品につ...
-
エクセル(2002)で商品A...
-
スリムドカンなどまるかん製品...
おすすめ情報