都道府県穴埋めゲーム

こんにちは、表題のような内容で行き詰ってしまい質問させてもらいます。

現在、商品在庫のデータベースをACCESS2010を使用してなんとか完成させました。
といっても売上管理等しているわけではなく、単に商品のデータベースです。

【テーブル構成】
T_商品
T_ブランド
T_ジャンル

T_商品を基本にし、T_ブランド、T_ジャンルはルックアップ用です。

T_商品をデータソースとして、入力、検索用に「F_商品」 というフォームを作ってあります。

入力、検索作業ともに問題なく行えており、現在レコード数は400程度ですが今後5000程度までは増えると思います。

表題のようにEXCELを併用するのは、今回WEBショップをはじめ、利用しているECシステムではCSVで掲載商品データをインポートできるので、それを利用しようと思っております。

理想の動作的には、
上記「商品フォーム」でショップに掲載したい(CSVファイルに転記したい)商品を検索し、
「ショップ掲載リスト」などのボタンを作って押すことで「掲載用.xls」などのエクセルファイルにテーブルのフィールドから必要な「商品名」「ブランド」「価格」などを抜粋して転記、
ショップに掲載したい商品、複数をすべて転記したらエクセルファイルをCSVファイルとして保存し、ECシステムにアップロードです。

現在フォームにエクセルファイルに転記用のボタンを作り、VBAで指定のエクセルファイルを起動するところまででき、コードはネットで探して、以下のようになっております。

Private Sub 転記ボタン_Click()

Dim objExcel
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Open "エクセルファイルのパス.xlsx"

End sub

エクセルファイルはテーブルの定義がしてあり名前を「商品テーブル」としてあります。

ACCESS側のVBAでエクセルシート上の商品テーブル内の上から順に転記していくにはどういうACCESS VBAを書けばいいのでしょうか?
上からというのは新しく転記する商品を次の行、次の行にということです。

http://oshiete.goo.ne.jp/qa/356182.html

こちらの質問も参考にしてみましたが、「.Cells(i, 1) = RS.Fields("フィールド1")」のところでエラーになりました。。。

長々と的を得てない質問文になってしまいましたが、よろしくお願いいたします。

A 回答 (1件)

一例ですがこのような感じではどうでしょうか。


但し出力用のエクセルデータが既に開いていることが前提なので、転記用のボタンとは別にエクセルファイルを開くボタンを設置するか、または手動で開く等しておく必要があります。。

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim objBook As Object
Dim objSheet As Object
Dim i As Long
Dim iname As String

Set db = CurrentDb

iname = [Forms]![F_商品]![テキスト0]
Set rs = db.OpenRecordset("select 商品名,ブランド,価格 from T_商品 where 商品名='" & iname & "'")
'テキスト0→商品名入力用のテキストボックス
'フィールド名は必要に応じてカンマ区切りで追加

Set objBook = GetObject("エクセルファイルのパス.xlsx")
Set objSheet = objBook.Worksheets("シート名")

i = objSheet.range("A" & objSheet.rows.Count).End(xlup).row + 1 '既存データの最終行を取得
objSheet.range("A" & i).CopyFromRecordset rs '出力

rs.Close
db.Close
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
あれからだいぶ期間がたっていたので、回答いただいたのに気づくのが送れて、お礼が遅くなりすみません。

何とか新規のシートには転記ができるようになったのですが、
= objSheet.range("A" & objSheet.rows.Count).End(xlup).row + 1 '既存データの最終行を取得

この部分で行き詰っているところでした。

参考にさせていただき完成させたいと思います。

ありがとうございました。

お礼日時:2014/07/18 09:59

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