自動インポートでエクセルデータをアクセスへ簡単に移行する方法と参考図書

このQ&Aのポイント
  • エクセルデータをアクセスへ簡単にインポートするための自動化方法を解説します。
  • ファイル数が多い場合でも、決まったフォルダにファイルを入れるだけで作業ができるようになります。
  • また、参考図書を紹介するのでアクセス初心者の方でも理解しやすくなっています。
回答を見る
  • ベストアンサー

アクセスへの自動インポート

エクセルデータをアクセスへインポートしているのですが ファイル数が多いため自動化を考えています。 ※決まったフォルダーへファイルを入れておいて メニューフォームから作業できるようにしたいと考えています ファイルはcsv形式です win98 アクセスは2000です 1.ファイルには全て見出しがついています。 (手動の場合は先頭行をフィールド名として使うにチェックを入れています) 2.ファイル名は常に同じ名前です 各ファイルを指定のテーブルにインポートしたいのですが どのようなマクロを組めばよろしいのでしょうか? (マクロを組まなければ出来ないですよね?) また、参考図書がありましたら出版社と本の名前を教えていただけると 助かります。 (本屋で立ち読みをしたのですが、見つけることが出来ませんでした。) お盆でお休みのところすみませんが、アクセス初心者のため、 ご教授願います。

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

  • ベストアンサー
  • miya_777
  • ベストアンサー率31% (44/140)
回答No.3

補足に対する回答です。 > データ型はそろえたのですがテーブルでは主キーでオートナンバー型の > フィールドを先頭に入れています。 > これはファイルにはないので削除したほうがいいのですか? 削除してください。フィールド数が一致しないと良くないです。 一度テーブルが無い状態で試してください。 インポートですのでテーブルが新規で作成されるはずです。 ちなみに TransferSpreadsheet メソッドのパラメータでTrueとしているのは、 先頭行を項目名として扱うという意味です。 インポートすると、項目名が自動設定されます。 その後、型が会わない各種データを調整してください。 また、インポート時は、NULL値があったりすると正確にインポートできない場合がありますので気をつけてください。 そういう場合は、先頭20行程度、ダミーデータを予めExcelのシートに突っ込んでおく必要があります。

taku0311
質問者

お礼

度々すみませんでした 何とかうまくいきそうです。 ありがとうございました。

その他の回答 (2)

  • KIMV
  • ベストアンサー率15% (82/544)
回答No.2

テキスト変換 で、区切り記号付きインポート      ・      ・ ファイル名はドライブから指定すれば出来ます。 上記を選択すればできると思います。 ダイアログボックスを使いたい場合は、モジュール等も使用するようになるので 面倒ですが・・・

taku0311
質問者

お礼

ありがとうございました <ファイル名はドライブから・・ うまく読み込みにいっているようです それ以外がまだうまくいきませんが・・ がんばります

  • miya_777
  • ベストアンサー率31% (44/140)
回答No.1

Docmd.TransferSpreadsheet acImport,,"設定したいテーブル名","フルパスのExcleファイル名",True,"シート名!範囲" と、こんな感じです。 上記で !範囲 を省略すれば、全範囲です。 TransferSpreadsheetメソッドの詳細は、Access VB Editorで ヘルプを参照して見て下さい。

taku0311
質問者

お礼

ありがとうございました。 アクセスは難しいですね 根気よくがんばってみます。

taku0311
質問者

補足

miya777さん 早速ありがとうございます。 試したみたのですが、下記のようなマクロでよろしいでしょうか 実行すると「外部テーブルのフォーマットが正しくありません。」 のエラーが表示されてしまいます。 データ型はそろえたのですがテーブルでは主キーでオートナンバー型の フィールドを先頭に入れています。 これはファイルにはないので削除したほうがいいのですか? それとも下記がまったく違うのでしょうか? お手数をおかけしますが教えてください。 Private Sub コマンド1_Click() On Error GoTo Err_コマンド1_Click Dim stDocName As String stDocName = "マクロ1" DoCmd.TransferSpreadsheet acImport, , "head", "head.csv", True, "head!" Exit_コマンド1_Click: Exit Sub Err_コマンド1_Click: MsgBox Err.Description Resume Exit_コマンド1_Click End Sub

関連するQ&A

  • ACCESSでのインポート処理の自動化

    ACCESS2002を使用して、CSVデータをもとにリストを作成するMDBを作成しました。 このCSVデータは不定期に更新され、更新するごとに新しいファイル名がついて準備されます。 今、マクロを使ってインポートの設定をしようと思ったんですが、ファイル名をきっちり指定しないとできないので、今回のように、そのつど、ファイル名が変わる場合はどのように設定をしていいのかわかりません。 私の希望としては、該当のフォルダを開くとこまでをマクロか何かでして、ファイルの選択は利用者にしてもらって、その後は自動的にインポート定義に基づいてインポートされるようにしたいんです。 こういうことは簡単にできないものでしょうか? VBとかもあまり使ったことがないので、マクロとかで指定できればそのほうが助かります。

  • Accessからのインポートについて

    Accessからテキストファイル(txt、csv)をまとめてインポートするにはどうすればいいですか? あるフォルダにあるテキストファイルをまとめてインポートできるようなマクロはできるのでしょうか? 分かる方がいましたら、よろしくお願いします。

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • Accessにインポートしようとするとエラーに

    Access2000にcsvファイルをインポートしようとすると、最後の「完了」ボタンクリック時に、下記エラーが表示され、 インポートが行われません。 「フィールド'フィールド名'の開始位置'35642'が有効ではありません。開始位置は32,767以内で指定してください。」 「インポート/エクスポート定義 'ファイル名 インポート定義'を保存するときにエラーが発生しました。」 これは、どこを修正すればいいのでしょうか?

  • Access2003でインポートをマクロで簡単に自動化したいです。

    Access2003でインポートをマクロで簡単に自動化したいです。 今はAccess2003でインポートをマクロにしたい時は、インポートする画面でインポート定義を作っておいて、マクロのテキスト変換でマクロにしています。 これだと、テキスト変換の画面でインポート元のフルパスを指定して、インポート先のテーブルのファイル名を指定しなくてはいけません。 インポート定義を作ってるのだから、定義と同じインポート元、インポート先で簡単にマクロでインポートを自動化する方法はありませんか? マクロにしたいインポートとエクスポートが結構な数あるので、マクロを作る時にいちいちフルパスとファイル名をコピーしてくるのが大変です。 簡単にインポートをマクロにする方法がありましたら、教えてください。

  • Access(ファイルの管理、インポートの自動化)

    ファイルサーバーにあるCSVファイルを、accessでインポートしてレポートにしたいのですが ※ファイルサーバーにあるCSVファイル名は固定 ※バッチ処理が動くとCSVファイルは上書き 普通にインポートするだけならできるのですが 同じファイル名なのでレポートを発行しなかった場合、 インポートを忘れてしまった場合などで 前のファイルが上書きできえてしまします。 インポートの自動化と例えば時間ごとのファイル管理が アクセスでできたらいいのではないかと思うのですがやり方もわかりません。 アドバイスいただけないでしょうか?

  • アクセスのインポートの仕方

    Windows2000/ACCESS2000を使用してます。 いつもお世話になってます。 ロータス1.2.3でエクセルに落としたデーターをアクセスにインポートさせたいのですが、うまく出来ません。 この度、アクセスで新しくデーターベースを作って、今までのデーターの移行をしたいのですが、エクセルのデーターをアクセスへインポートするやり方だと先頭行をフィールド名にしないと保存先のテーブルを選べませんでした。 先頭行のフィールド名を使わずに、データーだけを新しく作ったアクセスのテーブルに入れるにはどうしたら良いのでしょうか? 宜しくお願いします。

  • Access2000 csvファイルのインポート

    Access2000のVBAを使用してcsvファイルを用意されたテーブルにインポートをしたいのですが、 やっかいな条件があります。 ある決められたフォルダに複数のファイルが存在している、そこから全てのCSVファイルを読み込み、3フィールド目(1行目はタイトル行)の値が「"3"」のものだけインポートする。 あるフィールドには、255文字以上のフィールド(改行文字あり)があります。このフィールドはインポートしてもしなくてもよい 今までは、インポート定義を設定してインポートしていたのですが、csvファイルを判別して、インポート前にフィールドの判別をする方法がわかりません。また、255文字以上の対応もうまくいきません。   

  • アクセスのマクロについて

    お世話になります。 アクセスのマクロで、エクセルのファイルをインポートする場合、ファイルを指定したあとにインポートウィザードが開きますが、この時に出てくるたとえば「シートの選択」、「先頭行をフィールド名として使うにチェックを入れる」などをマクロで自動的に出来るのでしょうか?そして最後にインポート先のファイルを指定するところまでマクロで自動的に行き着きたいのですが、可能でしょうか? わかりにくい質問でしたらすみませんが、よろしくお願いいたします。

  • CSVファイルをインポートさせたい

    先頭行がフィールド名をあらわしたCSVファイルがあるのですが、これをOracle10gXEにインポートさせるにはどうしたらよいのでしょうか? 文字コードも気にする必要がありますか?現在SJISファイルのCSVファイルがあります。

専門家に質問してみよう