• 締切済み

ACCESS VBA テーブルデータをEXCELに

こんにちは、表題のような内容で行き詰ってしまい質問させてもらいます。 現在、商品在庫のデータベースを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://okwave.jp/qa/q356182.html こちらの質問も参考にしてみましたが、「.Cells(i, 1) = RS.Fields("フィールド1")」のところでエラーになりました。。。 長々と的を得てない質問文になってしまいましたが、よろしくお願いいたします。

みんなの回答

  • oka_me
  • ベストアンサー率86% (26/30)
回答No.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

neve33609
質問者

お礼

ご回答ありがとうございます。 あれからだいぶ期間がたっていたので、回答いただいたのに気づくのが送れて、お礼が遅くなりすみません。 何とか新規のシートには転記ができるようになったのですが、 = objSheet.range("A" & objSheet.rows.Count).End(xlup).row + 1 '既存データの最終行を取得 この部分で行き詰っているところでした。 参考にさせていただき完成させたいと思います。 ありがとうございました。

関連するQ&A

  • Excel VBA Accessでデータ取り込み

    Excel VBA、Access VBAについてお教え下さい。 「My_Excel.xlsm」というファイルがあります。このファイルにはボタンが1つあります。 このボタンを押すことにより、「Imp_Excel.xlsx」というファイルを取り込みたいと思います。 取り込み先ですが、「My_Excel.xlsm」に取込むのではなく、Accessの「My_Access.accdb」の「T_MyTable」というテーブルに取り込みたいと思っています。 Accessから直に「Imp_Excel.xlsx」をインポートするには、TransferSpreadsheetを用いれば比較的簡単にデータをAccessに取り込むことができるのですが、「My_Excel.xlsm」をまたいでAccessに取り込みたいので、TransferSpreadsheetは使えません。 やり方としては、 My_Excel.xlsxを開く。 レコードセット取得。 レコードセットがEOFになるまでまわして、SQLのINSERT、またはAddNewメソッドを使用して1件1件挿入していくしか方法はないでしょうか? 今のところ、私が思い浮かぶのは上記の方法なのですが、何かもっと簡単にやれるような方法はあるでしょうか?よろしくお願いします。

  • access2003でVBAを使ってEXCELファイルをコピーしたい。

    access、VBA初心者です。 会社でaccess2003を使ってexcelファイルを管理しようと思っています。 自動保存を防止するために非連結フォームで「保存ボタン」を押すことによってテーブルへデータを保存するようにしています。(ここまではできました) テーブルに保存するデータの1つにexcelファイルへのパス(ハイパーリンク)を保存したいのですが、 1.ファイルを参照するダイアログボックスを使って任意のecxelファイルを参照し 2.そのexcelファイルのコピーを作成し 3.オートナンバーのように名前を変更して 4.一定の保存場所へ保存。(保存場所は固定) 5.保存先のパスをテーブルに保存。 という作業を行いたいのですが、 どういった形で作成すればよいのかわかりません。 フォーム上に何を配置し、VBAをどういう構文で書けばいいのかもわかりません。 要は、後々に、誰がいつ作ったエクセルファイルなのかを引き出せるものができればいいので、もっといい方法があれば教えていただきたいです。よろしくお願いします。

  • accessでexcelのVBAを実行

    excelのファイルにはVBAは一切入れないで、accessにexcelで使いたいVBA入力しておき実行したいのです。 理由はCSVファイルをVBAにて加工したいからです。 よろしくお願い致します。

  • Accessにエクセルからデータをインポートしたい(VBA)

    Access(2000)のVBAでExcel(2000)からデータをインポートしたいと思います。 詳細は以下の通りです。 フォームでコマンドボタンをクリック時にダイアログボックスが開き、ファイルを指定し、該当のシート(シート名はどのファイルも固定)のデータをアクセスのテーブルにインポートしたい。 どうしたらできるのかここ数日悩んでいます。 よい方法がありましたら教えてください。

  • エクセルVBAでアクセステーブル更新

    エクセルとアクセスともに2003を使っています。 毎回エクセルでアクセスのテーブルに投入するデータを加工して、アクセスのテーブルに投入しているのですが、この過程をエクセルVBAを使って、自動的にアクセスのテーブルに投入していきたいと思っているのですが、教えて頂けないでしょうか? よろしくお願いします。

  • VBScriptからEXCELのVBAコマンドを実行するには?

    VBScriptからEXCELのVBAコマンドを実行するにはどうしたら良いでしょう? 例) Set P_OBJEXCEL = CreateObject("Excel.Application") ※ここで EXCEL VBA の Chdir "N:\"を行いたい W_INFILE = P_OBJEXCEL.Application.GetOpenFilename("EXCEL(*csv),*.csv",,"入力ファイル") P_OBJEXCEL.Application.Quit 環境→EXCEL2000+Windows2000+IE6 目的→入力ファイルを取得ため、N:\配下をGetOpenFileNameにて開きたい ※EXCELのデフォルトパスを変更したくないため 何かヒントを御願いします

  • エクセルVBAからアクセスフォームについて

    エクセルVBAでボタンを作成し、そのボタンを押すと、アクセスのフォームが開き、そこでデータを入力したいのですが、どのようにすればよいのでしょうか? 知っている方がいましたらご教授ください。

  • ACCESSのデータをEXCELに・・・

    Access97を使用しています。 ほぼ初心者に近いです。 会社で請求書のシステムを作成中です。 パラメータクエリを使用して例えば始まり「02/10/15」終り「02/12/15」と入力すればその期間の請求書データを抽出できるようになっています。 テーブルを増やしたくないのでそのパラメータクエリを使用して抽出したデータをExcelにエクスポートしたいのですが・・・いろいろ調べてみましたがわかりません。(モジュールに関数を作って、フォーム上でコマンドボタンを作成しそれをクリックすれば関数が動いてエクスポートと同時にExcelのファイルが出来上がるようにしたくて試みているのですが。) VBAでもかまいませんので出来る方法がありましたら教えてください。 よろしくお願いします。

  • アクセスVBAでエクセルを操作するのは不可能でしょうか?

    アクセスVBAでエクセルを操作するのは不可能でしょうか? テスト.xlsのシート1の1行目コピーして テーブルに追加するということがしたいのですがどういうコードを書けばいいのか分かりません。 テスト.xlsは開いている状態です。 アクセス側のユーザーフォーム上のコマンドボタンをクリックしたらこの動作を実行するコード。。。 というのは不可能でしょうか?よろしくお願い致します。

  • CSVデータをAccessのテーブルとして取り込み

    アクセスを勉強しはじめた初心者です。 csv形式のデータをアクセスのテーブルとして取り込みたいのですが、日付データがうまく取り込めません。 csvでは日付データが「20110101」という形式になっているためだと思うのですが、これをアクセスに日付「2011/1/1」として取り込むことはできないのでしょうか? csvをエクセルで開いて書式を修正すればできたのですが、csvファイルがたくさんあるため、アクセス側でなんとかできないかと思っています。 よろしくおねがいします。

専門家に質問してみよう