access vba インポートについて

このQ&Aのポイント
  • accessのVBAによるエクセルデータのインポート方法を教えてください。
  • エクセルファイルの複数のシートをアクセスのテーブルとして作成する方法について教えてください。
  • アクセスとエクセルのバージョンや使用環境についても教えてください。
回答を見る
  • ベストアンサー

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です。 エクセルは初級程度できます・・・。 基本を理解していなくてもわかる感じで助けてパソコン大先生!!

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Excelブックには以下のように 1行目にフィールドをあらわす項目名があるとして  日付     獲物    調理    感想   1月4日    たぬき   なべ    ばかうま 1月5日    らっこ   ひもの    うまい DドライブにあるTEST.xlsから インポートする(2)の方法について Sub try() Dim xlApp As Object Dim xlWb As Object Dim xlWs As Variant Set xlApp = CreateObject("Excel.Application") xlApp.Visible = False Set xlWb = xlApp.Workbooks.Open("D:\TEST.xls") For Each xlWs In xlWb.Worksheets DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, _ xlWs.Name, xlWb.FullName, True, xlWs.Name & "!" Next xlWb.Close xlApp.Quit Set xlWb = Nothing Set xlApp = Nothing End Sub こんな感じでも出来ましたよ。 ⇒ただしAccessの経験は皆無で 質問にあったヒントを基に かじった事のあるExcelVBAで 作成したものですので、 詳しくはわかりませんけど・・・・・ (1)についてはちょっと不明です。

mogurayama
質問者

お礼

有難うございます!! set とか for each in を調べたりして解決できました。 本当に難しい。

関連するQ&A

  • Access から Excelのシートをインポート時エラー

    Access の既存のテーブルにExcelのスプレッドシートからデータをインポートするため次のコマンドを実行すると、 F1フィールドがない旨のエラーメッセージが表示されます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "アクセスのテーブル名", "インポート元のエクセルファイル名.xls", False ここで、F1フィールドとは何でしょうか。 Excelのシートの1行目にAccessのテーブルの項目名と同名の項目名を挿入しておけば、上のコマンドの最後の引数をTrueにすればインポートは成功します。項目名のないスプレッドシートはインポートできないのでしょうか。 ご存知の方、教えてください。

  • ACCESS VBAでのインポート

    アクセスでエクセルのファイルをインポートするVBAを書いています。 まず、フォルダ内のファイル名を全て取得してコンボボックスで表示します。 そのコンボボックスからインポートするファイルを選択し、インポートします。 ところが、インポートしようとすると「実行時エラー'3011'」となり、オブジェクトが見つかりませんとなってしまいます。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", Me.shimei_folder.Value & "\06.6.1氏名順.xls", True このように記述するとキチンとインポートするのですが、 path = Me.shimei_folder.Value & "\" & CStr(Me.shimei_combo.Value) DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "氏名順_仮", path, True これだと3011エラーになってしまうのです。 エラー表示が「オブジェクト"06.6.16氏名順$"が見つかりません」となるのですが、.xlsが$になってしまうのが原因??とも思います。 コンボボックス上は「06.6.16氏名順.xls」と表示されているし、デバッグしてみてもMe.shimei_combo.Valueは「06.6.16氏名順.xls」なのですが・・・。 どなたか、解決方法がわかれば教えて下さい。 ちなみにACCESS、EXCELともに2000です。

  • AccessからVBAでExcellシートのインポート

    すみません。教えてください。 AccessVBAでエクセルのシートをインポートしたいのです。 いつも同じ行数ではありませんのでrange指定を埋め込むわけに行きません。 DoCmd.TransferSpreadsheet acImport, , "給与データ報告書", "c:\test\test.xls", True, "a1:p6000" でインポートできるのですが DoCmd.TransferSpreadsheet acImport, , "給与データ報告書", "c:\test\test.xls", True, "" range指定をしないとエラーになります。(出来ると書いてあるが) sheet1、ワークシート名とかの指定が出来ればと思い、いろいろ試してみたのですが出来ません。 宜しくお願いいたします。

  • ACCESS VBAでexcelの複数シートをインポートしたい。

    ACCESS VBAでexcelの複数シートをインポートできますか。 TransferSpreadsheetでシートを指定できるのでしょうか。 宜しくお願いします。

  • インポートの自動化

    複数のエクセルファイルを自動でインポートしたいのですが DoCmd.TransferSpreadsheet _ TransferType:=acImport, SpreadsheetType:=acSpreadsheetTypeExcel97 _ , TableName:="T1", FileName:="C:\Book1.xls", HasFieldNames:=True のコードだと特定したファイルしかできないみたいです・・。 指定したフォルダの中にある複数のエクセルファイルを 自動でインポートするコードなんてあるんでしょうか? 幾分、初心者のためわからないことが多いです。 教えていただけると助かります。 よろしくお願いします。

  • access97で作成したエクセルインポート機能がaccess2003で機能しません

    お世話になります。 下記ご経験ある方いらっしゃいましたら、教えていただけないでしょうか? Access97で開発されたあるシステムがあります。 これをAccess2003で使用したいと考えています。 データベースの変換は問題なく終了し、プログラムエラーも発生していないのですが、実行するとエクセルのインポートができていないことがわかりました。 ソースの該当箇所は以下のようになっています。 DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel97, "Trtry", "\\jpn\test\マスタ.xls", True (ある共有フォルダ上で管理しているエクセルを読み込みます) 試してに"acSpreadsheetTypeExcel97"の部分を変更してみたところ、以下のような状況でした。 (1)"97"の部分を"5"~"9"に変更したところ、現象は回避せず。 (2)"97"の部分を"3"~"4"に変更したところ、インポートはできたが、文字化けが発生してしまう。 ここで行き詰ってしまい、困っております。 宜しくお願い致します。

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

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

  • エクセルからアクセスにインポートする際のエラーについて

    こんにちは。 エクセルで作成された従業員台帳を、アクセスにインポートしたいのですが、エラーが出て困っています。 インポートの為のフォームを作り、参照ボタンでそのエクセルファイルを選択してフルパスを取得し(こちらの動作はOKです)、実行ボタンでそのファイルをインポートする、という方法をとろうと思います。 transferspreadsheet で、エクセルのファイル(.xls)は問題なくいくのですが、csv形式のファイルを指定して同じようにインポートすると、 実行時エラー 3274 外部テーブルのフォーマットが正しくありません。 となってしまいます。 書いているコードは、 DoCmd.TransferSpreadsheet acImport, 8, "従業員台帳(アクセス側でのテーブルの名前)", "上記画面で取得したフルパス", True(一番上の項目をフィールド名として使用します), "" です。.xlsでも.csvの形式でもインポートできるようにしたいのです。 環境は、winXPpro、Access2000、Excel2000 です。 よろしくお願いします。

  • Access2000 Export時にシート名を指定したい。

    お世話になります。 Access2000です。 アクセスよりテーブルAをエクセルにエクスポートする時にシート名を指定したいのですがどうすればよいのですか? DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "テーブルA", "E:\", True となっていますが・・・・ よろしくお願いします。

  • [PG]AccessVBAでファイルのインポートする方法

    [PG]AccessVBAでファイルのインポートする方法 VBAでエクセルファイルのインポートする機能を実装しています。 下記のコードで実行しますと実行時エラー"3011"が表示され DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange で止まります。何か解決方法を教えていただけないでしょうか? Function ExcelDataImport() 'On Error GoTo エラー Dim varac As Variant Dim varxls As Variant Dim strrange As String Dim strmsg As String ' --- Accessテーブルを指定します。存在していなければ自動的に作成します。 varac = "tbl_売上げテーブル" ' ---Excelファイルを指定します。必ず、存在していなくてはいけません。 varxls = "C:\売上げ.xls" ' --- データ入力のシート名とセル範囲を指定します。 ' なお、省略が可能です。省略した場合は、ワークシート全体がインポートされます。 strrange = "売上げシート!A1:D10" strmsg = "Excelファイル" & varxls & " を、Accessテーブル " & varac & _ "へ、データ入力を行います。" & Chr(13) & _ "Excelファイルの入力レンジは、 " & strrange & " です。" ' --- DeleteObjectメソッドを用いて、tbl_売上げテーブルを削除します。 ' --- TransferSpreadsheetメソッドを用いてデータをインポートします。 DoCmd.DeleteObject acTable, varac If MsgBox(strmsg, vbOKCancel) = vbOK Then DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ varac, varxls, True, strrange MsgBox "データ入力は、正常に完了しました。" End If Exit Function

専門家に質問してみよう