プロが教えるわが家の防犯対策術!

お世話になります
CSVファイルをAccessにインポートしたいのですが。

■検索ボタンクリック→ダイアログBOXでファイル指定→
選んだCSVファイル場所をテキストボックスに保存→
確認ボックス→はい→インポート開始
と言う具合が理想ですが可能ですか?

■また、実行中、待ち時間インジケータでインポートの進捗状況を
把握したいのですが

ちなみにファイル名、ワークシート名は毎回異なりますが列名は同じです。
判る方ご教授お願いします。

A 回答 (5件)

可能です。



・TransferText
・GetOpenFilename もしくは WindowsAPIのSHBrowseForForder、SHGetPathFromDlist

・SysCmd

あたりを調べていけば実現します。

こういったものは過去に何度か作りましたので、モジュールをそのまま載せたいところですが、どこに置いたかわからず、また、自分も最近mdbはご無沙汰なもので。

この回答への補足

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

補足日時:2007/09/26 12:38
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/26 12:40

「ダイアログBOXでファイル指定」に関しては、


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

この回答への補足

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

「しばらくお待ちください」でも十分です
宜しくお願い申し上げます

補足日時:2007/09/26 12:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/26 12:37

こちらを参考にどうぞ。


http://www.accessclub.jp/bbs5/0016/vba4679.html

この回答への補足

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

補足日時:2007/09/26 22:18
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2007/09/28 00:23

インポートを手動で行い、


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

この回答への補足

お返事ありがとうございます
試しましたがやはりエラーがでます
なにがいけないのでしょうか?
■Access
http://www.geocities.jp/bunsui_worid/Export.mdb
■CSV
http://www.geocities.jp/bunsui_worid/table.csv

又、このまま行くと不安要素があります
■全データ削除ではなく追加していきたい
■CSVには不要な列もある

よろしくお願いします

補足日時:2007/09/28 20:29
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/09/28 20:36

インポート定義が保存されていないようですが。



とりあえず
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」をクリックして、ウィザードに戻る。
あとは、次へでインポートを続けても、キャンセルでも結構です。

インポ-ト定義に不具合があるようなら、
再度、手動でインポートし
インポ-ト定義画面で、「定義」ボタンを押せば呼び出せます。
修正して上書きしましょう。

ご健闘をお祈りします。

この回答への補足

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

補足日時:2007/10/01 18:36
    • good
    • 0
この回答へのお礼

ありがとうございました

お礼日時:2007/10/01 18:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!