• 締切済み

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

tate_sanの回答

  • tate_san
  • ベストアンサー率33% (1/3)
回答No.2

WIN 7 Home Premium Access2010の環境でテストをしました。 シート名格納用のテーブル“T_選択シート名”(シート名・テキスト型、選択・Yes/No型、テーブル名・テキスト型)、ファイル選択用のフォーム“F_ファイル選択”(コマンドボタンを2つ<選択、インポート>、テキストボックスを1つ<ファイル名>、サブフォームを1つ<F_選択シート名 T_選択シート名から生成>)を作成 Microsoft Office 14.0 Object Library及びMicrosoft ActiveX Data Objects 6.0の参照設定を行う。 1.フォーム上のコマンドボタン“ファイル選択”をクリック 2.ファイル選択ダイアログボックスを表示 3.処理するエクセルふぁいえうを選択 4.DAOで選択したエクセルファイルのシート名を取得 → Microsoft Access Clubの記事を参考 5.サブフォームにシート名を表示 6.処理するシートをサブフォーム城から選択 7.フォーム上のコマンドボタン“テーブルへインポート”をクリック 8.選択したシートをインポート ※フォームの画像を添付しましたが、見ずらかったらすみません。 Private Sub 選択_Click() Dim FDB As FileDialog Set FDB = Application.FileDialog(msoFileDialogFilePicker) Dim SFL As Variant Dim FileSelect As Variant With FDB .Title = "Excelファイルの選択" .Filters.Add "Excelファイル", "*.xls; *.xlsx; *.xlsm", 1 .Filters.Add "すべてのファイル", "*.*" .AllowMultiSelect = False .InitialFileName = CurrentProject.Path If .Show = -1 Then For Each SFL In .SelectedItems FileSelect = SFL Next End If End With Me!L_ファイル名.Visible = True: Me!ファイル名.Visible = True Me!ファイル名 = FileSelect DoCmd.SetWarnings False DoCmd.RunSQL "DELETE T_選択シート名.* FROM T_選択シート名;" DoCmd.SetWarnings True Dim RS As New ADODB.Recordset Dim CN As New ADODB.Connection Set CN = CurrentProject.Connection RS.Open "T_選択シート名", CN, adOpenKeyset, adLockOptimistic Dim Db As DAO.Database Dim Tbl As DAO.TableDef Dim xlsFile As String xlsFile = FileSelect Set Db = OpenDatabase(xlsFile, True, True, "Excel 12.0;") For Each Tbl In Db.TableDefs If Right$(Tbl.Name, 1) = "$" Or Right$(Tbl.Name, 2) = "$'" Then 'シート名の最後は必ず$が付きます RS.AddNew RS.Fields(0).Value = Left(Tbl.Name, (Len(Tbl.Name) - 1)) RS.Update End If Next Tbl RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing Db.Close Set Db = Nothing Set FDB = Nothing Me!F_選択シート名.Visible = True Me!F_選択シート名.Requery Me!インポート.Visible = True End Sub Private Sub インポート_Click() Dim I As Integer Dim RS As New ADODB.Recordset Dim CN As New ADODB.Connection Set CN = CurrentProject.Connection RS.Open "T_選択シート名", CN, adOpenKeyset, adLockOptimistic For I = 1 To RS.RecordCount If RS.Fields(1).Value = True Then DoCmd.TransferSpreadsheet , acSpreadsheetTypeExcel12, RS.Fields(2).Value, Me!ファイル名, True, RS.Fields(0).Value & "!" End If RS.MoveNext Next I RS.Close: Set RS = Nothing CN.Close: Set CN = Nothing End Sub

参考URL:
http://www.accessclub.jp/bbs5/0005/vba1231.html

関連するQ&A

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

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

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

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

  • 【AccessVBA】フォルダを指定してインポート

    私は現在、Accessでフォルダ内のExcelファイルを一括でインポートし集計するというツールを作成しております。 そこで質問ですが、フォルダ指定ダイアログを表示し、ダイアログで指定したフォルダ(中はxls,xlsx,xltmなど)をテーブル上にインポートするような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です。 エクセルは初級程度できます・・・。 基本を理解していなくてもわかる感じで助けてパソコン大先生!!

  • Excelマクロ/ファイル名を指定してインポート

    テキストファイルからExcelへインポートする作業を自動化させたいのですが。 毎回インポート元のファイル名(格納しているフォルダは同じです)が異なるので、マクロ記録ではうまく作成できません。VBAでないと無理でしょうか? できればファイル名をその都度入力するようなダイアログボックスが表示されれば理想的です。VBA初心者なので教えてください。

  • ACCESS ワークシート インポートウィザード に行かない

    ACCESSのインポートを試みているのですが、「ワークシート ウィザード」の画面(ダイヤログボックス)が出ないのです。  ExcelデータをACCESS2000にインポートを試みているのです。 (1)[ファイル」メニュー → 「外部データの取り込み」→「インポート」 (2)「インポート」ダイヤログボックスから、Excelのファイルとファイルの種類[Microsoft Excel]を選択し、[インポート(M)」をクリックすると、「ワークシート ウィザード」の画面(ダイヤログボックス)が出るはずなのに出ないのです。 何か設定を変更したのではないかと考えていますがわかりません。 どなたか教えてください。

  • アクセス2003・VBA

    アクセス2003を使っています。 アクセスのVBAを使って下記のやり方を教えて下さい。 (1)ファイル名を指定して、エクセルファイルを開く。 (VBA構文上でファイル名を入力し、固定するのではなく、そのVBAを実行すると、ファイルをダイアログで選択する方法です。) (2)その開いたファイルで2行目からデータが入っている行までをコピーし、そのVBAを実行しているアクセスファイルの特定のテーブルに貼り付ける。 上記の方法がお分かりの方、是非教えて下さい。 よろしくお願いします。

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

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

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

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

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

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