アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。アクセス初心者です。
エクセルからアクセスへデータ転送したいのですが、エクセル側のデータを更新するのは、私では無く、ネットワークで繋がった会社の別の人が更新します。ですので、エクセル側のデータが更新されると、エクセルでマクロを実行し、アクセスのテーブルへデータが転送される様にしたいです。
又、データを転送する場合に、アクセスのあるテーブルのデータを全て消去して転送するパターンと、テーブルのデータの最後に追加してデータを転送させたい場合と2種類あります。
だれか教えて下さい。よろしくお願いします。

A 回答 (5件)

えーとどこから説明しましょうか。


SQL で調べてもらえば分かると思いますが、SQLとはデータベース問い合わせ言語です。
select * From 商品マスタ- は商品マスターのすべての項目という意味です
Where 以降は抽出条件になります。
で結局商品マスターの商品コードがShohinCDと同じものを抽出しますという意味になります。
例えばRange("B1")に商品コードが入っていれば(数値型)
select * from 商品マスター where 商品コード=" & Range("B1").value & ";"
という文になります。
このDBに対する命令をAccess(Jet)に送るわけです。
商品TBL.Open DBsqlstr, DB接続, , adLockOptimistic
でその結果が商品TBLに入ります。
商品TBLに対する更新は
商品TBL.Field("商品単価")=range("C1").value
で商品単価という項目名(列名)にC1の値が入ります。
すべての項目に値をセットしたら
商品TBL.Update でDBに書込みされます。
新規のレコードを追加するときは値のセットの前に
商品TBL.Addnew とします。
最後にrecordset と connectionをCloseします。
以上が更新の手順です。

難しいでしょうか?

この回答への補足

本当に何回もすいませんが、
生産数という名前のアクセスの、品番というテーブルの、品番というフィールドに,エクセル側のA列を、数量というフィールドに B列を送りたい場合にはどうしたらいいですか?エクセルのファイル名は生産です。申し訳ありませんが、よろしくお願いします。

補足日時:2009/10/18 00:44
    • good
    • 0

どこかで同じ質問に答えたことがあるような気がしますが。


ExcelからAccessにデータを送るにはADOを使います。
マクロになりますが
DB接続str=Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\○○\×××.accdb’
Set DB接続 = New ADODB.Connection
Set 商品TBL = New ADODB.Recordset
DB接続.Open (DB接続str)
DBsqlstr = "select * from 商品マスター where 商品コード=" & ShohinCD & ";"
商品TBL.Open DBsqlstr, DB接続, , adLockOptimistic
商品TBLというレコードセットに対して追加、修正を行って更新することができます。

この回答への補足

初心者ができる物ではなさそうですね。
これは、エクセルのVBAでこの様に書けばいいのですか?
商品TBLの部分はデータを受けたいテーブル名を書けばいいですか?
商品マスターは、アクセスのファイルの名前で、商品コードは何を指していますか?
質問ばかりですいません。よろしくお願いします。

補足日時:2009/10/16 23:21
    • good
    • 0

すみません。


当方2007所有しておらず、解説ができませんm(_ _)m
下記リンクを参照ください。。。

http://office.microsoft.com/ja-jp/access/HA01224 …
    • good
    • 0
この回答へのお礼

ありがとうございました。
がんばってみます。

お礼日時:2009/10/16 23:21

こんばんは。


エクセルがアクセスのテーブルのような記述の場合(セル連結や
行に表題など記載されていない)ですが、インポート処理より
そのエクセルシート自体をアクセスのリンクテーブルとして
設定したほうが便利ではないでしょうか?(開いた時点で最新データ)

やり方は各テーブルが表示されている所を右クリック。
サブウィンドウのテーブルのリンクをクリック。
ファイルの種類をエクセルにし、ネットワークの該当ファイルを
見つけてダブルクリック。
どのシートか選択し次へ。あとは指示に従って進めて下さい。
出来あがると→マークのついたリンクファイルが出来あがりです。
あとは通常のアクセスのテーブルと更新クエリや選択クエリ等
普通に使えます。
使わなくなったら右クリックで削除しても、リンクが切れるだけで
基データファイル(エクセルファイル)は消えません。
お試しを。。
「エクセルからアクセスへデータ転送」の回答画像2

この回答への補足

アクセス2007を使用していますが、テーブルが表示されている所で右クリックをしてもテーブルのリンクが有りません。間違っていたらごめんなさい。
開く、デザインビュー、インポート、エクスポート・・・とあります。

補足日時:2009/10/16 22:18
    • good
    • 0

「エクセルから」「アクセスへ送る」よりも


「アクセスが」「エクセルに取りに行く」の方が簡単かも。

「テーブルのインポート」か「エクセルデータへのリンクテーブル」か
どちらかになるでしょうね。
実際には「アクセスで使うテーブル」と、(上記のテーブル)は別にしておくこと。

> 又、データを転送する場合に、アクセスのあるテーブルのデータを全て消去して転送するパターンと、テーブルのデータの最後に追加してデータを転送させたい場合と2種類あります。

テーブルは「コピー」後、貼り付けする際に「テーブルへの追加」指定が可能。
そうすれば「まずアクセスで使うテーブルを空にしてから始める」か
「テーブルはそのままで始める」かで対応できます。

この回答への補足

アクセスがエクセルに取りに行く方法は理解しました。
エクセルからアクセスへ送るのは難しいですか?
アクセスは私のパソコンにしかインストールしていないので、
他の人がエクセルのデータを更新したらその都度、エクセル側からデータを送ってもらえると大変便利なのですが。

補足日時:2009/10/16 22:26
    • good
    • 0

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