
当方のレベルはアクセス初級者(基本的な操作)、
エクセルはごく簡単なVBAをいじる中級者です。
アクセスにて顧客マスター、商品マスターを作成しています。
エクセルで納品書を作成しています。
現状では外部データの取り込みをつかって
エクセルシートに顧客データ(シート1)と商品データ(シート2)を
取り込んだ後に、納品書(シート3)でシート1、2に
VLOOKUP関数をかけて、納入先と商品情報を
伝票におとしこんでいます。
こんなまどろっこしいことをせずに、
エクセルからアクセスのテーブルへ直接データを取り込む方法は
ないものでしょうか?
どなたかよろしくお願いいたします。
No.7ベストアンサー
- 回答日時:
>当方のレベルはアクセス初級者(基本的な操作)、
>エクセルはごく簡単なVBAをいじる中級者です。
Accessのレポートと言う方向になっていますが、
この条件でしたら、エクセルで帳票もありだと思います。
その理由は、
・mdbからデータを引っ張るのはVBA+ADOを使えばそれほど難しくない。
Ecxel VBA経験者なら大丈夫でしょう。
・Excelの方が表現力が豊かなので、最終的な帳票の見栄えは良い。
もちろん、作りこめばの話ですが・・・。
・ADOに慣れることは、今後VB等の他の開発言語を使う際に役立つ。
そういう機会が有ればの話ですが・・・。
Excel帳票のメリットは他にも
・帳票をExcel形式で保存できるので、後から簡単に加工できる。
・メールで送ったりも出来る。
(Accessは持っていないが、Excelは持っている、という人は多い)
もちろん、Accessの勉強のためレポートを使うのもありだと思いますし、
その方が簡単かもしれません。
参考のため、Excelでの方法を書いてみます。
どちらを選択するかは、お好みで。
****Excel VBA+ADO で mdbファイルからデータを取り込む例****
まずAccessの方で、帳票用のクエリを作ります。
データの入っているテーブルと、マスターテーブル等を結合して、並び順なども指定しておきます。この辺りはデータベースの方が便利ですので、ExcelのVLOOKUP関数は使わない方向で・・・。
データベースを扱う上でSQL文(クエリ)の学習は必須です。SQL文は標準化されていますので、Access以外のデータベースでも応用が利きます。覚えておいて損はないと思います。
SQL SELECT INNER JOIN
上記のキーワードを検索すれば必要な情報は見付かると思います。この辺りが、データベースを扱う際の、最初の難関でしょう。
もっと具体的な情報が必要でしたら、テーブルの構造(テーブル名、フィールド名、主キー)を補足してください。
次に、Excelの準備ですが、VBAの画面で[ツール]→[参照設定]を開き
Microsoft ActiveX Data Objects 2.7 Libray
を選択しておきます。(バージョンは多少異なるかも。最新の物を選択)
----サンプルソース----
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim dbName As String
Dim dbPath As String
dbName = "db1.mdb" 'MDBファイル名
dbPath = ActiveWorkbook.Path & "\" 'MDBのPath 今回は ExcelのBook と同じフォルダを指定
' MDB との接続を確立する。決まり文句です。
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & dbPath & dbName & ";"
'レコードセットを開く。今回は"Q1"というクエリを参照のため開きます。
'この部分で、SQL文を指定することも可能です。
rst.Open "Q1", cnn, adOpenForwardOnly, adLockReadOnly
'レコードが無くなるまで繰り返します。
Do Until rst.EOF
'Recordset![フィールド名]で各フィールドのデータを参照できます。
Debug.Print rst![ID], rst![DATA]
rst.MoveNext '次のレコードに移動します。
Loop
rst.Close
cnn.Close
Set cnn = Nothing
Set rst = Nothing
----------------------
これだけのコードでデータベースのデータを参照できます。
後は、ExcelのVBAの知識があれば帳票を作ることは可能でしょう。
(この部分が多少面倒かも・・・(^^;、Accessのレポートにするか悩むところです)
ADOに関しては、Webで検索すれば解説しているサイトは見付かると思いますので、詳しくはそちらで。
この回答への補足
おおおおうっ!師匠!おおおんっ!
私の気持ちを汲んでいただきありがとうございますぅぅっ!
レポート作れば簡単コールに責め立てられ
ヨヨと泣いておりました・・・
既に見栄えはそこそこいいフォーマットをつくっていたんですぅぅ!
いざ、アクセスレポートに叛旗をひるがえさんっっっ!
でもADOって何・・・・orz
No.6
- 回答日時:
>できれば、アクセスでの納品書の作り方がわかる本・サイト等をおしえてくださいませ。
。。このあたりでいかがですか?
http://www.amazon.co.jp/o/ASIN/4898146902/503-71 …
下記サイトでは初心者向けのACCESS開発手法の説明があります。
http://www.naboki.net/access/beginner/index.html
No.5
- 回答日時:
できることはできますけど。
ACCESS側のレポート作成で納品書を作成するほうが、はるかに簡単だと思います。
ExcelからACCESSのDBのデータを直接使うのは、それなりにACCESSを勉強されてからでないと難しいかと思います。(はっきり言ってレポートの作成より、EXCEL側でのACCESSデータ取り込み用VBA作成のほうが桁違いに難しいです)
この回答への補足
了解です。
では、アクセスで納品書をつくるとして、
必要なのは
(1)レポートフォーマットの作成方法
(2)顧客データと売上データ(商品×数量)の入力方法
になりますよね。
参考書カモーーーンw

No.4
- 回答日時:
エクセル側からアクセスのデータの更新などがあるのなら、ADOを使うという手もあります。
SQL文なども発行できるので、どうしてもエクセルから行いたいのであれば、このあたりを探ってみてはいかがでしょうか? 私はエクセルのVBAはあまり知りませんので、詳細はよくわかりませんが、エクセルの特定のセルに、sqlの結果を入れていけばよいと思います。まあ、No2の方のおっしゃるとおりアクセスでレポートを作るほうがはるかに簡単だと思いますけれど。
この回答への補足
顧客コードと商品コードと数量を入力したら、
自動的に金額計算されたシートがでてくる・・・
入力フォームの作成方法であるとか、データのつなぎ方・・
という部分がアクセスでどうやっていいか、わかっていない
参考書をひきながらではとてもじゃないが前にすすまない
という、状態です。
皆さんが、簡単と前提にある知識が
私にとって今なんだかよくわかっていない、という
厳しい現実を前にたたずんでいる状態で
こんなことになってます。
No.3
- 回答日時:
Accessで全て行えば・・とも思いますが、完成までに時間がかかりそうですね。
Excelに MS Queryをインストールして・・リンク先(後半部分)でも良さそう。
私は使ったことはありませんけど (^^ゞ
井上 治 氏のHPです。
Microsoft Accessなど、外部で作成されたデータソースをシートに取り込む方法です
http://www.asahi-net.or.jp/~ef2o-inue/kihon/sub0 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- その他(パソコン・スマホ・電化製品) エクセル初心者です。 仕事でエクセルを使っていて、普段は素人でもできる簡単な関数を使ったことがある程 1 2022/05/25 11:17
- Excel(エクセル) エクセル 多数のファイルから値を抜き出したい 4 2022/12/12 16:49
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
エクセルのフォームについて(...
-
データベースの構築について
-
【ACCESS】複数のパソコンから...
-
停止したpostgresqlサーバのデ...
-
リスト形式の表とデータベース...
-
「データベース」の意味について
-
アクセス(データベースとプロ...
-
ACCESSで条件付き書式の設定方法
-
データベースソフトのTCARDにつ...
-
Accessが開きません!!
-
ODBCを使わないでExcelへ連携
-
Word、一太郎、PDFのデータベー...
-
数字とテキストが入り混じるデ...
-
クエリをキャンセルしたいので...
-
データベース内の情報を検索で...
-
ファイルメーカーサーバーでエ...
-
ムーバブルタイプでホームペー...
-
JSONって単純にテキストの書き...
-
クラスタリングツールについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
型 varchar から型 numeric へ...
-
エクセルのフォームについて(...
-
ハイフン無しの電話番号データ...
-
オラクルのLONG RAW型のテーブ...
-
エクセルの重複データの曖昧検索
-
ACCESSで条件付き書式の設定方法
-
OpenOfficeのBaseでExcelのデー...
-
カンマ区切りで格納するカラム...
-
データのインポートに失敗します。
-
【ACCESS】複数のパソコンから...
-
DBとテキストファイルの比較
-
【パフォーマンス】ファイル読...
-
別のACCESSデータベースのテー...
-
AccessとPowerPointの会社と家...
-
エクセルの行数が限界です。
-
POSTGRESQLにEXC...
-
98のデータをvistaにUSB接続...
-
栄養成分を計算する簡単なソフ...
-
なぜMySQLを使うのか。
-
最適なデータベースソフト
おすすめ情報