目次
ACCESSとExcelの連携 在庫管理 その5
こんにちは。伊川(@naonaoke)です。
http://keiyu.xyz/2020/03/03/zaiko4/
今回は、上の記事の続きになります。
Excelから、ACCESSへ転送する魔法のコードを紹介します。
ACCESSへの転送コード
動画でも、ブログでも、何度か紹介していますが、カンタンです。
コードがやや複雑なだけです。
特定の場所を変更するだけで、今回紹介するコードは普通に作動します。
この転送コードを取得しただけで、人生がすこし、幸福になりました。
ACCESSへの転送コード 作成手順その1 転送する前の仕掛け
コードを音読する
ボタンをクリックしたら、
セルB20に本日の日時を入力する。
セルB11がなにも入力されていなかったら、空白ありをMsgBoxに表示させて、条件から抜ける。
条件が抜けることが重要ではなく、入力漏れをなくすることが重要です。
このひと手間加えることで、業務時間は驚くほど短縮されます。
セルB11は、契約番号を入力する場所です。
契約書番号は主キーに設定していますので、空白は許されません。
このコードで、業務時間が40%されたと統計が出ています。(当社比:嘘ですけど)
また、本日の日時は、必ず入力します。
日時がないデータベースは、クリープを入れないコーヒーと同じです。
ACCESSへの転送コード 作成手順その2 転送コード
変更するコード その1
上の図の書き方を相対パスといいます。
相対パスのメリットは、このファルダのドライブを変更しても転送が可能ということです。
変更するコード その2
ACCESSのフィールドとExcelのセルを一致させます。
この点を変更するだけで、みなさんの業務にチューニングできます。
余談
データ転送完了の文言は必ず表示させましょう。
すべてのコード
Sub ボタン3_Click() Range("B20") = Date If Range("B11").Value = "" Then MsgBox "空白あり" Exit Sub End If Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset Dim conStr As String conStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " _ & ActiveWorkbook.Path & "\在庫管理.accdb" con.Open ConnectionString:=conStr rs.Open Source:="MT_申込", ActiveConnection:=con, _ CursorType:=adOpenKeyset, LockType:=adLockOptimistic With rs .AddNew .Fields("社員氏名").Value = Range("B2") .Fields("社員ID").Value = Range("B3") .Fields("契約日").Value = Range("B4") .Fields("機種名").Value = Range("B5") .Fields("ギガ数").Value = Range("B6") .Fields("色").Value = Range("B7") .Fields("端末価格").Value = Range("B8") .Fields("商品ID").Value = Range("B9") .Fields("キャンペーン").Value = Range("B10") .Fields("契約書番号").Value = Range("B11") .Fields("顧客名字").Value = Range("B12") .Fields("顧客氏名").Value = Range("B13") .Fields("顧客郵便番号").Value = Range("B14") .Fields("顧客都道府県").Value = Range("B15") .Fields("顧客住所").Value = Range("B16") .Fields("顧客電話番号").Value = Range("B17") .Fields("顧客生年月日").Value = Range("B18") .Fields("備考").Value = Range("B19") .Fields("入力日").Value = Range("B20") .Update End With rs.Close con.Close MsgBox "データ転送完了" End Sub
ここがポイント
動画の中では、二重転送が起きた際のエラーも表示しています。主キーが設定されていれば、重複しません。ACCESSは優秀です。
まとめ
今回は、転送コードを紹介しただけです。
次回は、転送コードを解説します。
今回のサンプルファイルは、ありません。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。