dポイントプレゼントキャンペーン実施中!

現在マスタの登録業務でEXCELを中心に行っているのですが、件数が10万件を超えておりACCESSに格納しています。
そこで、こちらであらかじめ指定したマスタ名称(キー項目)をEXCEL上に並べておき、ACCESSからその他のマスタ項目を名称の隣にずらりと持ってきたいのですが追加編集を行いたいのですがそんな事可能なのでしょうか?ご教授願いたく。
例>Access
マスタ名称 金額 区分
AAAA 100円 原料
BBBB 500円 容器
CCCC 600円 原料

Excel(マスタ名称のみ予め記述しておく)
マスタ名称
AAAA←ここに対して金額と区分をACCESSから引っ付けたい
CCCC←
※EXCELをACCESSに一度インポートしてクエリ作成する等はしたくないのです。

A 回答 (3件)

#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
    • good
    • 0

エクセルの表をそのままアクセスにインポートし、マスタ名をキーにしてリレーションを作り、ついでクエリーでアクセスの表とエクセルからきた表を読み込むと、一発で希望のものが作れますよ。

データ入力は一切しなくてよいです。
    • good
    • 0

Excel VBAでADOを使えばできます。

が、以下の意味次第です。
>※EXCELをACCESSに一度インポートしてクエリ作成する等はしたくないのです。

その方法ではAccessでクエリを作成する代わりに、外からAccessに接続してクエリでデータを抜き出します。
だから、「VBAは使いたくない」とか「クエリ・SQLは書きたくない」という意味も含まれているのだったら、無理なんですが。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。
VBAのADOですね。要件に合うサイトか本かを探してみようかとは思います。
一度ACCESSに取り込んで~~
というのはEXCELシートのマスタ項目が定期的に変動するので、逐次ACCESSへのインポート作業するのは負荷が大きいと思ったからです。上記ADOと呼ばれる手法を使えば変動にも対応できそうな感じですかね。

お礼日時:2008/11/01 11:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す