• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access2010でVBAでのインポート)

Access2010でVBAでのCSVファイルインポート方法と主キーの設定について

このQ&Aのポイント
  • Access2010のVBAを使用してCSVファイルをテーブルにインポートする方法について説明します。
  • 手動でインポートする場合はメニューから主キーを付与することができますが、VBAを使用するとCSVファイルそのままの状態でしかインポートできないため、主キーの設定方法についても説明します。
  • また、データを削除してからインポートする必要がある場合もありますので、その方法についても解説します。

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

  • ベストアンサー
回答No.2

質問返し?になってしまいますが >後から別途オートナンバーを付与する方法を見つけたのですが、レコード数が17万ほどなのでエラーが出て、レジストリを触らないといけないと解説にあったため の解説リンク先?または、具体的な方法を教えてもらえますか? 出来ればエラー内容も? 回答の際はなるべく検証してから行うようにしていますが せっかく回答しても「それでダメだったんです。」だと辛いので。。。 当方の後学の意味でも是非。 再インポートの際にはオートナンバーは1から振り直しということで 下準備 取りあえずウィザードでインポートを完了させます。 (これは出来ているようですね) 出来たテーブルを開いて、Ctrl + A で全レコードを選択し、Delete します。 デザインビューに切り替えて、主キーフィールドを削除し一旦保存。 再度デザインビューで開いて、手作業で主キーフィールド(オートナンバー型)を設定します。 (ウィザードで作られた主キー(オートナンバー型)だと下記コードでエラーになります) (フィールドのデータ型が正しくありません←バグっぽい?) あとは、下記コードを実行する都度オートナンバーは1から始まるハズです。 Sub test1() '要参照設定 Microsoft ActiveX Data Objects 6.x Library か Microsoft ActiveX Data Objects 2.x Library どちらかに With CurrentProject.Connection .Execute "DELETE * FROM [テーブル名];", dbFailOnError .Execute "Alter Table [テーブル名] Alter Column [主キーのフィールド名] Identity( 1, 1 );", dbFailOnError End With DoCmd.TransferText acImportDelim, "インポート定義名", "テーブル名", "CSVファイルのフルパス", True End Sub ※参照設定は多分、Objects 6.x Library は 6.1になっていると思います。 VBEのメニュー → ツール → 参照設定 からプルダウンしチェックを入れてください。

katanohosi
質問者

お礼

NotFound404さま ご教示ありがとうございます。 早速やってみます。 結果前にお礼を記載していますが、お尋ねの内容を早くご連絡しようと思い記載いたしました。 エラー: 実行時エラー’3052’: ファイルの共有ロック数が制限を超えています(Error 3052)。レジストリエントリ MaxLocksPerFile の値を増やしてください。 このエラー関連の質問↓ http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11126950316 ベストアンサーで紹介されていたサポートです↓ http://support.microsoft.com/kb/815281/ja

katanohosi
質問者

補足

NotFound404さま お礼に書き込めませんでしたので、すみません、補足欄に・・。 ありがとうございました!うまくできました☆ わかりやすく教えていただきありがとうございました。

その他の回答 (1)

回答No.1

データだけ削除してインポートすれば Currentdb.Execute "DELETE * FROM [更新データ【更新根拠】(当月)]",dbFailOnerror DoCmd.TransferText acImportDelim, "222 更新データ インポート定義", "更新データ【更新根拠】(当月)", Mypath & Fdn & "\222 更新データ【請求根拠】.csv", True, "" 主キーなどなどの設定は変化しないハズです。 テーブル名やフィールド名などにたとえ全角文字であっても丸かっこを使用するのは 止めといた方が・・・。 http://support.microsoft.com/kb/826763/ja

katanohosi
質問者

補足

NotFound404さま ありがとうございます。 インポート対象のcsvファイルには元々ナンバーがふられていないため、インポートする際に"主キーを自動的に設定する"機能で番号を付与したいのです。 VBA構文で指定方法は有りますでしょうか。 別途、後から別途オートナンバーを付与する方法を見つけたのですが、レコード数が17万ほどなのでエラーが出て、レジストリを触らないといけないと解説にあったため"主キーを自動的に設定する"機能で番号を付与しようとしています。 それからテーブル名等の記載方法についてURLありがとうございます。大変参考になりました。 まだまだ初心者なので大変助かります。