• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

>フォームでコマンドボタンをクリック時にダイアログボックスが開き、ファイルを>指定し、該当のシート(シート名はどのファイルも固定)のデータをアクセスのテ>ーブルにインポートしたい。 過去に同様な質問がありました。(http://oshiete1.goo.ne.jp/kotaeru.php3?q=268353httpを参照ください。) まず >フォームでコマンドボタンをクリック時にダイアログボックスが開き、ファイルを>指定し、 というところはAccessDeveloper版でなければダイアログボックスは使えません。 そこでWindowsAPIを使用します。(下記参考URL参照ください。) これを使ってファイルの情報が得られたらあとはデータをインポートすればよいだけです。がんばってください。 PS このWindowsAPIはファイルを開くダイアログボックスですが、このサンプルコードのOPENをSAVEに変えたらファイルを保存のダイアログボックスになるようです。

参考URL:
http://www.moug.net/cgi-bin/technic.cgi?acvba+TI02010007
nao111111111111
質問者

お礼

ありがとうございます。 No2をやってみた後に、AccessDeveloper版で試してみたいと思います。

その他の回答 (1)

  • muran
  • ベストアンサー率31% (12/38)
回答No.2

TransferSpreadsheet メソッド を使用すれば、指定したファイルのデータをインポートできます。 ヘルプにも載っているので確認してみてください。 使用例:TBL_TESTというテーブルにtest.xlsの内容をインポートする DoCmd.TransferSpreadsheet acImport, 3,"TBL_TEST","C:\test\test.xls"

nao111111111111
質問者

お礼

ありがとうございます。 インポートはできそうなんですけど、その時にダイアログが開くかどうか・・・ やってみないことには解りませんね。 今、エクセルの方でもVBAをやってるので、なかなか捗りません!!

nao111111111111
質問者

補足

できました。引数の宣言にちょっと戸惑ってしまいましたが…。 テーブルのインポートはできましたが、ダイアログでファイルを選択したいので、 No1の方をやってみます。

関連するQ&A

  • Access VBA インポート シート指定

    AccessのVBA を用いて、ExcelからAccessへデータを インポートする際、ダイアログボックスを表示させて Excelのファイルを選択させるようにしています。 これをシート名まで指定させる事は可能でしょうか? ◆シートは枚数が固定されず、都度かわります。 ◆インポートしたいシート数も都度かわります。 ◆1sheet = 1 テーブルにしたいです。 ◆1度の動作で、1sheetのインポートでも、複数でもかまいません。 ◆できれば、ダイアログでファイルを選択した流れで シートまで選択される方法が望ましいです。 ◆Accessのテーブル名もテキストボックスで任意なものが 付けられるようにしたいです。 お知恵をお貸し下さい、何卒よろしくお願いいたします。

  • ACCESS VBA マクロ  Excelのデータをインポートする(複数シート)

    ACCESSのVBAでEXCELのシートにあるデータをインポートしたいです。シートは複数あり、シート数は作業毎に一定ではありません。データの数もシート毎に違います。(項目(column数)は全部同じです) 手作業でインポートをすると、どのシートのデータをインポートするかウイザードで選択しますが、シート数が多いので一度に同じテーブルにインポートをするVBAを組みたいのです。(データ数が多いのでエクセルで一つのシートにまとめる事が出来ません。) シート数がその都度違うので変数を使ったりVBAでインポートするのかな?と思うのですが。。。 インポートするベースのテーブルは先に作ってあり、データをインポートする際にそのテーブルに追加する形にしたいと思っています。 excelのVBAは初心者ですがAccessでのVBAの経験がありません。 ACCESSでのマクロ、VBAを良くご存知の方がいらっしゃったら是非教えてください。どうぞよろしくお願いいたします。

  • Excel→Access VBAによるインポート

    1つのExcelファイルの複数のデータシートをAccess2000にインポートしたい。 【説明】 data.xlsという名前のExcel2000で作成したファイルがあり、その中に同じ書式(列)を 持ったSheetが20枚ほどあります。 それらのデータをAccess2000にインポートしたいのですが、 1.作業は毎月発生する。 2.ほかのユーザも出来るようにする。 などの理由から、マクロかVBAを使って自動化できればと考えています。 ぽちっとボタンを押すと、data.xlsのすべてのシートからデータをインポートし、 それぞれのSheet名がついたテーブルに格納されるというのが理想です。 フィールド名は固定ですので、あらかじめテーブルを作っておくことは出来ます。 Excelの各シートの上部数行は見出しやら説明文が書いてありますので、 インポートの際にその部分の行(5行分)を削除することが必要です。 当方VBAの知識はほぼ皆無ですので、やんわりご教示頂ければ幸いです。 よろしくお願いいたします。 (次回ネットに入るのは15日以降です)

  • AccessにExcelを追加でインポートできない

    Access97でExcelシートを新規テーブルにインポートしました。 1回目はうまく行くのですが、作成されたテーブルに 再度同じExcelをインポートすると 「ファイル~をインポートするときにエラーが発生しました。ファイルはインポートされませんでした。」 となります。 色々なデータで試しましたがOSは98でもXPでも同じでした。 もちろんテキストデータで保存してからインポートするのは問題ありません。 過去に同様の質問があるはずだと思ったのですが 探すことができませんでした。 みなさんのは出来ますか?

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • access vba インポートについて

    別のところで質問したのですが、回答が得られなかったので こちらで質問しまする。 昨日、accessをさわリはじめた、おっさん初心者です。 お願い:エクセルのデータをアクセスにインポートしたいです。      1つのエクセルファイルに複数(30枚)シートがあり、      それぞれのシート名で、アクセスのテーブルが複数作成できれば良いです。      アクセスのVBAにどんなコードを書けば良いのでしょうか。 1つのシートの取り込みは、 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, ”インポート先テーブル名", "ファイル名", True, "シート名" & "!" (全くわかってませんが、)これでできましたが、この辺がおっさんの限界でした。 色々web見たのですが、難しい・・・とりあえず、やさしく教えてください。 (1)フィールド名ごとインポートする方法 (2)すでに存在するテーブルにデータを継ぎ足す方法 テーブル”A”には  日付     獲物    調理    感想   1月1日    きつね   なべ    にがい  1月2日    もぐら   からあげ  まずい 1月3日    ぱんだ   さしみ   あまい           ↑   ↑   ↑   ↑  ↑ シート ”A”から 1月4日    たぬき   なべ    ばかうま 1月5日    らっこ   ひもの    うまい を追加 この二つができるとうれしいです。 アクセスは2000です。 エクセルは2000です。 ウィンドウズはXPです。 エクセルは初級程度できます・・・。 基本を理解していなくてもわかる感じで助けてパソコン大先生!!

  • AccessからExcelのファイルを作るVBAを書いているのですが・・・

    AccessのテーブルをExcelのファイルにして特定のフォルダに保存するVBAを作成中です。 訳あって、テーブルからそのままExcelにできず(transferのコマンドが使えないのです)、並び替えや抽出などをかけて、一旦フォームにしてから、Excelのファイルにします。その際に、Outputtoというコマンドを使用しています。 そのテーブルに日付型のデータがあり、そのコマンドで作ったExcelのファイルでは、日付が「yyyy/mm/dd」で表示できず、21-feb-01のような形になってしまいます。どうやらファイルの形式が古いせいのように思うのですが、Outputtoのコマンドではファイル形式まで指定できないみたいで・・・ いい方法があったら教えていただきたのです。 よろしくお願いします!m(__)m

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

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

  • accessへのexcelデータのインポート

    友人からもらったaccess(2000)の管理表にEXCEL2003で作ったデータをインポートしたいのですが、類似質問も調べてみたのですがわからないので、教えてください。 管理表にはすでに、テーブル、クエリ、フォームが作られています。 テーブルの既存データをすべて削除して、新しいexcelデータをインポートしたいのです。 1.既存のテーブAを開き外部データの取り込みからexcelデータをウィザードに従って進めていくと、テーブルAはすでに開いていますとなり、インポートできません。 2.次に開かない状態で同様に進めて、インポート先のテーブルAを指定して完了をクリックするとインポートするときにエラーが発生し、インポートできませんとメッセージが出ます。 3.excelのシート名での新規データインポートは出来るのですが、既存のテーブルAに新しいデータのみインポートするにはどのようにすればいいのか?教えてください。 4.既存の管理表にはテーブルが20、クエリが50、レポートが13で構成されていて、その中の2つのテーブルに新規データ(約2000件)をインポートしたいのです。 まったくの素人に毛が生えた程度で思い違いもあるかと思いますが、データのみ変更してソフト自体はそのまま使用したいので、よろしくお願いいたします。 質問の内容に不足がありましたら補足しますのでよろしくお願いいたします。

  • 任意Excel,TxtファイルをAccessへ取込

    ダイアログボックスにて取得したEXCEL2003ファイルおよびTextのインポート方法を教えていただけないでしょうか?ダイアログボックスからファイル名を取得するところ(テキストボックスにファイル名を代入するところまで)は、AccessClubのサンプルファイルで何とか紐解けましたが、この選択されたExcelファイルをAccessのテーブルとして(テーブル名=Excelファイル名)ファイルインポートするところがなかなか作れません。調べてもなかなか情報みつからずです。いまは、ファイル名とフォルダ場所を固定させることによって、マクロの”ワークシート変換”にて取り込んでおります(添付画像参照ください)。どうかアドバイスのほどよろしくお願い申し上げます。なお、Access2003です。

専門家に質問してみよう