• ベストアンサー

Access VBA ダイアログ指定 CSVエクスポート

お世話になります CSVファイルをAccessにインポートしたいのですが。 ■検索ボタンクリック→ダイアログBOXでファイル指定→ 選んだCSVファイル場所をテキストボックスに保存→ 確認ボックス→はい→インポート開始 と言う具合が理想ですが可能ですか? ■また、実行中、待ち時間インジケータでインポートの進捗状況を 把握したいのですが ちなみにファイル名、ワークシート名は毎回異なりますが列名は同じです。 判る方ご教授お願いします。

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.5

インポート定義が保存されていないようですが。 とりあえず Private Sub 実行_Click()   'TextConv Me.テキスト1, "テーブルA", "テーブル1"   TextConv Me.テキスト1, "", "テーブル1" End Sub にすれば、インポートは出来ます。 インポート定義ができたら、その名前にしてください。 > ■全データ削除ではなく追加していきたい 'テキストコンバートルーチン Sub TextConv(strFle As String, strInp As String, strTbl As String)   If MsgBox("インポートしますか?", 4, "実行確認") = vbYes Then     DoCmd.TransferText acImportDelim, strInp, strTbl, strFle, True     '1行目がヘッダーなら、最後の TRUE が必要です。     MsgBox "テーブルデータを更新しました"   End If End Sub > ■CSVには不要な列もある ということであれば「インポート定義」は必須です。 もう一度、 手動で、ファイルメニューから [外部データの取り込み] - [インポート] ファイルの種類でテキストファイルを選択し、 「Table.csv」を選択してインポートをクリック。 以下、ウィザードの画面で 「区切り記号付き」を選択して「次へ」をクリック。 「フィールド区切り記号」を「カンマ」、 「先頭行をフィールド名として使う」にチェック、 ここで 「設定」ボタンをクリックして、インポート定義の画面に。 必要なら、フィールド名を書き換える。 (CSV の ヘッダとテーブルのフィールド名が異なる場合など) 必要ならデータ型を書き換える。 (0001 というコードが数値にされてしまうと困る場合など) インポートしないフィールドは「スキップ」欄にチェックする。 ここで 「保存」ボタンをクリック。 必要なら「定義名」を書き換えて、「OK」をクリック。 定義名は忘れないでメモしてね。 デフォルトで表示される名前には、スペースが含まれているので注意。 「OK」をクリックして、インポート定義の画面に。 「OK」をクリックして、ウィザードに戻る。 あとは、次へでインポートを続けても、キャンセルでも結構です。 インポ-ト定義に不具合があるようなら、 再度、手動でインポートし インポ-ト定義画面で、「定義」ボタンを押せば呼び出せます。 修正して上書きしましょう。 ご健闘をお祈りします。

BSR123
質問者

お礼

ありがとうございました

BSR123
質問者

補足

ありがとうございます 動作確認取れました。 大感激です

その他の回答 (4)

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.4

インポートを手動で行い、 途中で、「設定」ボタンをクリックします。 そこで、必要ならテーブルのフィールド名、データ型を入力し 「保存」ボタンをクリックします。 そこで、設定した定義名を、 インポート定義名の引数に渡してください。

BSR123
質問者

お礼

お返事ありがとうございます

BSR123
質問者

補足

お返事ありがとうございます 試しましたがやはりエラーがでます なにがいけないのでしょうか? ■Access http://www.geocities.jp/bunsui_worid/Export.mdb ■CSV http://www.geocities.jp/bunsui_worid/table.csv 又、このまま行くと不安要素があります ■全データ削除ではなく追加していきたい ■CSVには不要な列もある よろしくお願いします

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

こちらを参考にどうぞ。 http://www.accessclub.jp/bbs5/0016/vba4679.html

BSR123
質問者

お礼

ありがとうございます

BSR123
質問者

補足

ありがとうございます 今、インポート確認でしたところです、返事遅くなりすみません。 一つ判らないのはインポート定義名の書き方です 今は、テーブルにF1、F2、F3、と作成しCSVファイルも同じような形にして、 VBのインポート定義名を空白にしてテストしました下記 Private Sub 実行_Click() TextConv Me.テキスト1, "", "テーブル1" End Sub よろしくお願いします

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.2

「ダイアログBOXでファイル指定」に関しては、 Accessのバージョンによって お勧めの方法が変わります。 バージョンをお知らせください。 「待ち時間インジケータでインポートの進捗状況」に関しては、 インポートの方法(簡単なのは「テキスト変換」ですが)によっては 不可能です。 結構、難易度が高いです。 「しばらくお待ちください」と表示するなどの 代替手段ではいけませんか?

BSR123
質問者

お礼

お返事ありがとうございました

BSR123
質問者

補足

お返事ありがとうございます Access2000で作成しています。 質問しておいて申し訳ないのですが、インジケータなくてもいいです まずは、インポートが先決で^^; 後からでも追加は可能ですよね? 「しばらくお待ちください」でも十分です 宜しくお願い申し上げます

回答No.1

可能です。 ・TransferText ・GetOpenFilename もしくは WindowsAPIのSHBrowseForForder、SHGetPathFromDlist ・SysCmd あたりを調べていけば実現します。 こういったものは過去に何度か作りましたので、モジュールをそのまま載せたいところですが、どこに置いたかわからず、また、自分も最近mdbはご無沙汰なもので。

BSR123
質問者

お礼

お返事ありがとうございました

BSR123
質問者

補足

理想なモジュールあれば感激です 宜しくお願いします

関連するQ&A