Excel→Access VBAによるインポート
- Excel2000で作成したファイルの複数のデータシートをAccess2000にインポートする方法について説明します。
- Excelファイルのすべてのシートからデータをインポートし、Sheet名がついたテーブルに格納する方法を紹介します。
- VBAを使って自動化することで、毎月発生する作業や他のユーザが行う必要がある場合でも簡単にインポートできます。
- ベストアンサー
Excel→Access VBAによるインポート
1つのExcelファイルの複数のデータシートをAccess2000にインポートしたい。 【説明】 data.xlsという名前のExcel2000で作成したファイルがあり、その中に同じ書式(列)を 持ったSheetが20枚ほどあります。 それらのデータをAccess2000にインポートしたいのですが、 1.作業は毎月発生する。 2.ほかのユーザも出来るようにする。 などの理由から、マクロかVBAを使って自動化できればと考えています。 ぽちっとボタンを押すと、data.xlsのすべてのシートからデータをインポートし、 それぞれのSheet名がついたテーブルに格納されるというのが理想です。 フィールド名は固定ですので、あらかじめテーブルを作っておくことは出来ます。 Excelの各シートの上部数行は見出しやら説明文が書いてありますので、 インポートの際にその部分の行(5行分)を削除することが必要です。 当方VBAの知識はほぼ皆無ですので、やんわりご教示頂ければ幸いです。 よろしくお願いいたします。 (次回ネットに入るのは15日以降です)
- ozoc
- お礼率68% (13/19)
- オフィス系ソフト
- 回答数2
- ありがとう数11
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
しょっぱなから動かないのは参照設定の問題でしょう。 アクセスで他のDLLファイルを利用した機能を使うときに必要です。 http://www.accessclub.jp/beginer/tips/tips_32.htm フィールド名の部分はより具体的に書くなら こんな感じになります。 --- With rst .AddNew !氏名 = "太郎" !住所 = "東京都" .Update End With --- これであるテーブルの氏名欄に「太郎」住所欄に「東京都」が入る訳です。 で今回の場合はエクセルのとあるシートのとあるセルの値がアクセスのテーブルに入るんですよね? ですから "太郎"の部分が、Worksheets("Sheet1").Range("A1")とかになる訳で。 ループや変数扱い方がよく分からないのなら全て決め打ちにするしかないでしょう !氏名 = Worksheets("Sheet1").Range("A1") !住所 = Worksheets("Sheet1").Range("A2") !電話 = Worksheets("Sheet1").Range("A3") というような感じで。 よく分かるようになったら数行でまとめられるようになります。が流石にそれは自分で勉強して下さい。
その他の回答 (1)
- popesyu
- ベストアンサー率36% (1782/4883)
まぁアプローチの方法はいろいろあるんですけど。 おそらく一番簡単な方法である「DAO」で。 Dim dbs As database Dim rst As Recordset Set dbs = OpenDatabase("アクセスファイルへのパス") Set rst = dbs.OpenRecordset("テーブル名", dbOpenTable) '「テーブル名」は自分でつけたテーブルの名前 '「アクセルへのパスは」「C:\test\test.mdb」とかこんな感じ。 With rst .AddNew !フィールド名1 = Range("A1").Value) !フィールド名2 = Range("B1").Value) .Update End With 'フィールド名はテーブルの項目名のこと '実際はWith内のコードはループさせたりするほうが便利 'Range("A1")の部分も該当部に修正。こちらも上と同様変数にした方が便利。 rst.Close Set rst = Nothing Set dbs = Nothing 'お約束の終了宣言 --- ループや変数の扱いについてはVBAに限らずプログラムの基礎ですので、ここぐらいは独学でも勉強された方が良いかと思います。
補足
popesyuさん、お返事ありがとうございます。 返事が遅くなり申し訳ありません。 ええと、これはExcelに記述するコードですね? 試したところ、一行目で「コンパイルエラー:ユーザー定義型は定義されていません」 と怒られてしまいました。 ここから先に進めません。 あと、"!フィールド名1"の個所ですが、ここも今ひとつ分かっていません。 良きアドバイスをお待ちしております。
関連するQ&A
- <ACCESS VBA -> EXCEL>getObjectしたEXCELファイルのシートを指定したい
ACCESSのVBAマクロでEXCELファイルを指定してデータを取得しようとしています。 GetObject("C:\ファイル名.xls", "Excel.Sheet") でEXCELファイルを取得するまでは良いのですが、そのファイルのシートを指定する方法がわかりません。 基本かもしれませんが、ご教示をお願いします。
- ベストアンサー
- オフィス系ソフト
- 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です。 エクセルは初級程度できます・・・。 基本を理解していなくてもわかる感じで助けてパソコン大先生!!
- ベストアンサー
- Visual Basic
- VBA で EXCELファイルをインポート
VBAに詳しい方お助けください。VBAを使用して、データベースをつかってインポート(データベースファイルを開かずにデータの取り込み)を行いたいのですが良く分かりません。データベースは一つはCSVファイル、一つはXLSファイルです。取り込み先のEXCELファイルのSHEET1にCSVファイルのデータベース(SHEET1)、取り込み先のEXCELファイルのSHEET2にXLSファイルファイルのデータベース(SHEET1)とインポートするにはどのようなVBAの記述が必要ですか?色々と調べているのですがうまく行きません。EXCELは2003を使用しています。
- ベストアンサー
- オフィス系ソフト
- 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)にインポート
お世話になります。 VBAによるExcelのインポートにつきましてご教授願います。 あるExcelファイルがあり、それをAccessにてインポート したいと考えております。 通常の表であれば、インポートすることは可能なのですが、 その表の上数行に表名や氏名があったり、見出しが2行に なっていて、片方が結合されるような状態です。 xxxx表 ←表名 氏名:○○○○ ←氏名 ←空白行 ←空白行 上期 下期 ←セルが結合されている No A B 金額 E F 金額←ここを見出しとして 1 インポートしたいところ 2 3 ※A~F及び金額にはそれぞれ値が入ってます。 このようなExcelファイルをVBAにてインポートすることは 可能でしょうか? それとも、ある程度はExcel上で加工する必要があるので しょうか? 宜しくお願い致します。
- ベストアンサー
- その他(データベース)
- Accessにエクセルからデータをインポートしたい(VBA)
Access(2000)のVBAでExcel(2000)からデータをインポートしたいと思います。 詳細は以下の通りです。 フォームでコマンドボタンをクリック時にダイアログボックスが開き、ファイルを指定し、該当のシート(シート名はどのファイルも固定)のデータをアクセスのテーブルにインポートしたい。 どうしたらできるのかここ数日悩んでいます。 よい方法がありましたら教えてください。
- ベストアンサー
- オフィス系ソフト
- DLookup Excel→Access
エクセルVBAからアクセスのデータベースへ接続し テーブルの値を取得したいのですが エクセルVBAで mystr = DLookup("[フィールド]", "Tテーブル", "[名前] = '検索文字'") と言うコードでアクセスのデータを取得することはできませすか? テーブル名とフィールド名は指定できたのですが ファイル名の指定はどうすればいいのでしょうか? オフィス2010です。
- ベストアンサー
- オフィス系ソフト
- Access から Excelのシートをインポート時エラー
Access の既存のテーブルにExcelのスプレッドシートからデータをインポートするため次のコマンドを実行すると、 F1フィールドがない旨のエラーメッセージが表示されます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "アクセスのテーブル名", "インポート元のエクセルファイル名.xls", False ここで、F1フィールドとは何でしょうか。 Excelのシートの1行目にAccessのテーブルの項目名と同名の項目名を挿入しておけば、上のコマンドの最後の引数をTrueにすればインポートは成功します。項目名のないスプレッドシートはインポートできないのでしょうか。 ご存知の方、教えてください。
- ベストアンサー
- Visual Basic
- AccessへのExcelデータインポート
お世話になります。 Accessのテーブルデータの更新をExcelからのインポートで行いたいと試していますが「上書きできません」とエラーが表示されます。 データ型などの設定変更を回避するため、一旦元データをEXCELにダウンロードし、見出しのみを残しデータを削除、2行目以降に最新データを値貼り付けで保存しています。Accessのインポート作業に於いて、一応データ型や主キーの設定確認していますが、同様のファイル3つとも同じ現象です。 なお、3つのファイルはリレーションを張り、クエリを作成しています。リレーションを外さないと更新が出来ないのであれば、複数のリレーションが絡んでおり、とても外すのは危険とも思っています。 どうぞ宜しくお願い致します、
- ベストアンサー
- Access(アクセス)
お礼
ご指摘のとおり、ライブラリにDAOが組み込まれていませんでした。 組み込み後は動くようになりました。 まだ完成にはほど遠いですが、いったんクローズします。