前提・実現したいこと
Excel 1ファイルごとに1レコード(管理している項目は同じ内容・位置なので、必要なセルを1行にまとめて疑似的にレコードっぽくしてます)
この1行だけで良いので、Accessのテーブルに書き込みというか貼付けしたい
イメージしているのはExcelでコピーして、Accessのテーブルで貼り付けする動作
Excelのデータイメージ
Sheet1・・・物件名、号室、契約者名、仲介手数料などを計算・記録 印刷する形でエクセル方眼紙のように作られてます
その中から保管しておきたいデータをシートの下に「=○○」で引っ張って疑似的にレコードっぽく
※この動作は、Access側ではなくExcel側から行いたいです※
自分がやるならどんな形でもいいんですが、営業にやってもらおうと考えてるのでボタン1つで動作したい
(Access開いてAccessでボタン押させるのも、営業から問い合わせ来るだろうなって思うほどのスキル具合です)
試したこと
ExcelVBA+AccessDBについて調べて、ADODB?でのデータベース操作はやってみました。
フィールドを指定する形であれば、読み書き更新削除は動かすことができます。
ただその後、すぐ見つかるだろうとExcelからAccessへの行コピペを調べてみたところ全然出ず、フィールドを指定するものしか出ませんでした
手動ではすぐできるし、Excelシート→ExcelDBは同じ処理をしている(それもテラテイルで教えてもらいました)ので、
簡単なのかと思ったんですが・・・
補足情報(FW/ツールのバージョンなど)
Excel、Accessともに2016
以前質問させてもらい本当に色々と教えていただきました。
今まで難しく考えすぎてたのかなと要らないものを削ぎ落してみると、残ったのはExcelをDBとして使う不安くらいでした。
(毎月20~30、多くても100行かないくらいのレコード追加・変更、計算はExcelで行うのでDBから行うのは抽出のみ、やったとしても足し引きくらい)
追々はデータ自体の精度を高めるためにAccess等で入力フォーム作ったりとか、何か別のアプリケーションに移行したい気持ちはありますが、
自分も営業もスキルが足りていないので、最低限のデータの保管・抽出について意識付けをまずやりたいと思っています。
引き続き自分でも探してみます。何卒よろしくお願いいたします。
###追記
'ExcelよりAccessDBへレコード追加・書き込み Sub addRecords() Dim strFileName As String strFileName = "test2.accdb" Dim adoCn As Object 'ADOコネクションオブジェクト Set adoCn = CreateObject("ADODB.Connection") 'ADOコネクションオブジェクトを作成 adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\" & strFileName & ";" 'Accessファイルに接続 Dim adoRs As Object 'ADOレコードセットオブジェクト Set adoRs = CreateObject("ADODB.Recordset") 'ADOレコードセットオブジェクトを作成 '***** データを登録 ***** Dim i As Long Dim rng As Range '・・・ レコードセットrsを開く処理(略) adoRs.Open "sheet1", adoCn, adOpenKeyset Set rng = Range("A1", "T2") '疑似レコードの範囲(1行目項目名、2行目値) adoRs.AddNew For i = 1 To rng.Columns.Count adoRs.Fields(rng.Cells(1, i).Value).Value = rng.Cells(2, i).Value Next adoRs.Update '***** データベース終了処理 ***** adoRs.Close 'レコードセットのクローズ adoCn.Close 'コネクションのクローズ Set adoRs = Nothing Set adoCn = Nothing 'オブジェクトの破棄 End Sub
試しに作った分をちょっと加工してみましたが、Forの後の「adoRs.Fields~」の部分でエラーが出ます。
実行エラー3265 要求された名前、または序数に対応する項目がコレクションで見つかりません
そもそもレコードセットを開く処理あたりも不安ですが・・・
回答2件
あなたの回答
tips
プレビュー