• 締切済み

EXCELLデーターをACCESSへインポート

EXCELLの特定ファイルの特定シートで任意に範囲を指定してACCESSのテーブルにインポートしたいのですが、現在”DoCmd.TransferSpreadsheet [transfertype][, spreadsheettype], tablename, filename[, hasfieldnames][, range] と言った、プログラミングで出きるのか思考錯誤しています。最後のEXCELLシート内の任意の範囲のプログラミングがわからず(もしかすると不可能なのか?)困っています。どなたか教えていただけないでしょうか?

みんなの回答

  • ruru0707
  • ベストアンサー率68% (20/29)
回答No.2

範囲を指定する事は可能です。 Rangeの所の指定の仕方は・・・ シート全体を指定する場合は、Sheet1!のように記述します。 セルの範囲を指定する場合は、Sheet1!A1:D12のようにシート名とセルの範囲を!でつないで記述します。 アクセスのヘルプの「"TransferSpreadsheet/ワークシート変換" アクション」を見ると詳細が記載されています。 ちなみに「TransferSpreadsheet メソッド」のヘルプには記述の仕方の詳細は出ていませんのでご注意下さい。

hamham91
質問者

お礼

ありがとうございます。 質問内容が足らなかったのですが、特定のシートに対しての範囲指定はできるのはわかったのですが、代数を用いた任意の範囲指定ができないものかと、考えておりました。とりあえず、現在は別の方法で進めようと方向転換しています。回答いただいて感謝しております。

noname#79209
noname#79209
回答No.1

Accessのヘルプに 次の例では、Lotus のワークシート Newemps.wk3 の指定した範囲から Access の [社員] テーブルにデータをインポートします。ワークシートの 1 行目はフィールド名として使います。 DoCmd.TransferSpreadsheet acImport, 3, _ "社員","C:\Lotus\Newemps.wk3", True, "A1:G12" があります。 範囲は「範囲名(名前)」も使えるようです。 とにかくペルプの目次から、 「Visual Basic プログラミング」→「Microsoft Access Visual Basic リファレンス」 →「メソッド」→「T-U」→「TransferSpreadsheet メソッド」 を見てください。

関連するQ&A

  • 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、ワークシート名とかの指定が出来ればと思い、いろいろ試してみたのですが出来ません。 宜しくお願いいたします。

  • インポートの自動化

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

  • EXCELファイルからACCESSへインポート

    質問させていただきます。 ACCESSのフォームから、EXCELファイルを選択してEXCELの内容を、 テーブルにインポートさせたいのですが。以下の方法で行って いるのですが、テーブルに反映されません。 Private Sub cmd_Import_Click() Dim InitialFileName As String Dim varTitle As Variant Dim FileName As String InitialFileName = "hoge.xls" varTitle = "ファイルを開く" FileName = GETHOGEOPEN(varTitle, InitialFileName) DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_HOGE", FileName, True DoCmd.SetWarnings True MsgBox "完了しました" End Sub ACCESS → ACCESS2003 SP3 EXCEL →EXCEL2003 SP3 よく見ると、すでにEXCELのバージョン指定が違う(汗) これが原因かも・・・・(汗) わかる方がいらっしゃったら教えてください。

  • ACCESS2000でExcelから特定フィールドをインポートしたい

    ACCESS2000でExcelから特定のフィールドをインポートしたいのですが、 うまくいきません。 Excelはフィールド数が254フィールドもあり、 テーブルにインポートしたいフィールド数は30フィールドです。 Excelでは特定フィールドをインポートすることができないようなので、 一時テーブルに全てのフィールドをインポート後 必要なフィールドだけ取り出そうとやってみたのですが、 以下のコードを実行すると、13のフィールドが「解析不能なフィールド」と インポートエラーが出てしまいます。 DoCmd.TransferSpreadsheet acImport, 8, "TEMPテーブル", "c:\data.xls" また、Excelファイルをcsv形式に変換して、インポート定義を作る方法も やってみたのですが、インポート定義作成時に 「フィールド'ID'はインポートまたはエクスポートしようとしている テーブルまたクエリに存在しません」 というエラーが出てしまいます。 どうしたらインポートできるでしょうか。よろしくお願いします。

  • Excel複数シートをaccessへ一括インポート

    Excel複数シートを、accessへ1つのテーブルへ一括インポート (1) ワークブックは複数あります。 (2) ブックには、色々な名前のシート名があります。 (3) テーブルに指定する名前をワークブックに合わせればと思ってます 複数シートの一括取り込みの vb は以下の通り作ってみました。 ここでは、 vbの中で「テーブル名」・「ドライブ内のワークブック(xlsデータ)」指定しなければいけないので、 任意で「テーブル名」・「ワークブック(xlsデータ)」「ドライブ」を(ダイアログボックスなど)指定出来ればと思っています。 ===================================================================== Private Sub コマンド0_Click() '////////////////////////////////////////////////////////// '/Excel複数シートのAccessテーブルへのインポート / '/参照設定 Microsoft Excel x.x Object Library / '////////////////////////////////////////////////////////// Const csWsRng As String = "A1:D1000" Const csTblName As String = "インポートテーブル" Const csWbPath As String = "D:\" Dim voXlApp As Excel.Application Dim voXlWb As Excel.Workbook Dim voXlWs As Excel.Worksheet Set voXlApp = New Excel.Application voXlApp.Visible = True Set voXlWb = voXlApp.Workbooks.Open(FileName:=csWbPath & "\aaaa.xlsx", _ ReadOnly:=True) For Each voXlWs In voXlWb.Worksheets DoCmd.TransferSpreadsheet TransferType:=acImport, _ SpreadsheetType:=acSpreadsheetTypeExcel9, _ TableName:=csTblName, _ FileName:=voXlWb.FullName, _ HasFieldNames:=True, _ Range:=voXlWs.Name & "!" & csWsRng Next voXlWs voXlWb.Close voXlApp.Quit Set voXlWs = Nothing Set voXlWb = Nothing Set voXlApp = Nothing End Sub ===================================================================== ご教示頂ければと思います。 宜しくお願い致します。

  • ACCESS エクスポートについて

    ACCESSのエクセルへのエクスポートについて お世話になりあます。 既存エクセルにACCESSのDoCmdを使用してエクスポートしようと考えています。 エクスポート先は既存エクセル(セルに数式あり)です。 DoCmd.TransferSpreadsheet acExport, SpreadsheetType, TableName, FileName , True,SheetName という分を作り実行しましたが、「ワークシートのセルが削除できません」と出てしまい エクスポートできません。 ヘルプを見ると数式が含まれていると出来ないと書いてありました。 数式を消さないと出来ないのでしょうか。 お手数ですが、分かる方おられましたら教えて下さい。

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

  • アクセスからエクセルへの処理

    Private Sub エクスポート_Click() Dim myExcel As Object 'エクセルに出力 DoCmd.TransferSpreadsheet filename:=CurrentProject.Path & "\分析素材\test.xls", _ tablename:="HJEX016", _ transfertype:=acExport 'ファイルを開く Set myExcel = CreateObject("Excel.Application")   myExcel.Visible = True ★ myExcel.workbooks.Open filename:=CurrentProject.Path & "\分析素材\test.xls" アクセスのテーブルをエクセルシートに出力し、そのファイルを開くという プログラムを作成してみたのですが、★のところで固まってしまいます。 何がいけないのでしょうか?

  • ACCESSで EXCELのデータをインポートするには

    よろしくお願いします。ACCESS2000,EXCEL2000を使っています。 運営報告.XLS の一部のデータをテーブル(TBL入金)にインポートしたいのです。 1.マクロを組みました。添付をご覧下さい。 ワークシート名はどのように定義しますか? 目的のワークシートが左端にあるときは予定通りですが 2.実はACCESSのAPが入っているフォルダーで関連のファイルを処理したいので次のようにコーディングしました Private Sub 入金インポート_Click() Dim ファイル名 As String ファイル名 = Replace(CurrentProject.FullName, CurrentProject.Name, "") & "運営報告.xls" DoCmd.TransferSpreadsheet acImport, 3, TBL入金, ファイル名, yes, "Q1:S2" End Sub ここでもワークシート名は要求しません 実行時エラー'2495' このアクションまたはメソッドを実行するには、[Table Name/テーブル名]引数が必要です。 のメッセージが出ます。どのようにしたらよいでしょうか コーディング中 "Q!:S2"に続いて「,」を入力するとUseOAを要求しているようですがこれはどのようなものですか

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

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

専門家に質問してみよう