- 締切済み
ACCESSとEXCELの連携に関して
現在マスタの登録業務でEXCELを中心に行っているのですが、件数が10万件を超えておりACCESSに格納しています。 そこで、こちらであらかじめ指定したマスタ名称(キー項目)をEXCEL上に並べておき、ACCESSからその他のマスタ項目を名称の隣にずらりと持ってきたいのですが追加編集を行いたいのですがそんな事可能なのでしょうか?ご教授願いたく。 例>Access マスタ名称 金額 区分 AAAA 100円 原料 BBBB 500円 容器 CCCC 600円 原料 Excel(マスタ名称のみ予め記述しておく) マスタ名称 AAAA←ここに対して金額と区分をACCESSから引っ付けたい CCCC← ※EXCELをACCESSに一度インポートしてクエリ作成する等はしたくないのです。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
#1です。 ある程度VBAが書けて、わからなければ調べられるという前提のもとサンプルを挙げておきます(キー項目をExcelのDataシートのA1から縦に入力していき、入力したものについて他の項目を取得して横にセットします。参照設定を行うことも多いですが、行わないレイトバインディングの例です)。 レイアウトが変わって必要な項目が変わってもクエリを書きなおすだけだから、影響は少ないです。 工夫すれば、1回だけAccessにクエリを投げて必要なキーのもののデータをまとめて取得することも可能です。 Sub getItemsFromAcc() Dim adoConn As Object Dim adoRS As Object Dim strConn As String Dim strSQL As String Set adoConn = CreateObject("ADODB.Connection") Set adoRS = CreateObject("ADODB.Recordset") strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEMP\test.mdb" adoConn.Open strConn r = 1 With Worksheets("Data") Do Until .Cells(r, 1) = "" strSQL = "SELECT DAMOUNT,DTYPE FROM ACCESSTBL WHERE DKEY='" & .Cells(r, 1) & "'" adoRS.Open strSQL, adoConn Do Until adoRS.EOF .Cells(r, 2) = adoRS.Fields("DAMOUNT") .Cells(r, 3) = adoRS.Fields("DTYPE") adoRS.movenext Loop adoRS.Close r = r + 1 Loop End With adoConn.Close Set adoRS = Nothing Set adoConn = Nothing End Sub
エクセルの表をそのままアクセスにインポートし、マスタ名をキーにしてリレーションを作り、ついでクエリーでアクセスの表とエクセルからきた表を読み込むと、一発で希望のものが作れますよ。データ入力は一切しなくてよいです。
- jamshid6
- ベストアンサー率88% (591/669)
Excel VBAでADOを使えばできます。が、以下の意味次第です。 >※EXCELをACCESSに一度インポートしてクエリ作成する等はしたくないのです。 その方法ではAccessでクエリを作成する代わりに、外からAccessに接続してクエリでデータを抜き出します。 だから、「VBAは使いたくない」とか「クエリ・SQLは書きたくない」という意味も含まれているのだったら、無理なんですが。
お礼
ご回答ありがとうございました。 VBAのADOですね。要件に合うサイトか本かを探してみようかとは思います。 一度ACCESSに取り込んで~~ というのはEXCELシートのマスタ項目が定期的に変動するので、逐次ACCESSへのインポート作業するのは負荷が大きいと思ったからです。上記ADOと呼ばれる手法を使えば変動にも対応できそうな感じですかね。