• ベストアンサー

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

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

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

  • ベストアンサー
  • m3_maki
  • ベストアンサー率64% (295/459)
回答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% (295/459)
回答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% (295/459)
回答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% (295/459)
回答No.2

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

BSR123
質問者

お礼

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

BSR123
質問者

補足

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

回答No.1

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

BSR123
質問者

お礼

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

BSR123
質問者

補足

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

関連するQ&A

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

    AccessのVBA を用いて、ExcelからAccessへデータを インポートする際、ダイアログボックスを表示させて Excelのファイルを選択させるようにしています。 これをシート名まで指定させる事は可能でしょうか? ◆シートは枚数が固定されず、都度かわります。 ◆インポートしたいシート数も都度かわります。 ◆1sheet = 1 テーブルにしたいです。 ◆1度の動作で、1sheetのインポートでも、複数でもかまいません。 ◆できれば、ダイアログでファイルを選択した流れで シートまで選択される方法が望ましいです。 ◆Accessのテーブル名もテキストボックスで任意なものが 付けられるようにしたいです。 お知恵をお貸し下さい、何卒よろしくお願いいたします。

  • Access VBA CSV取込でファイル指定

    いつもお世話になっております、この度もよろしくお願い致します。 作成環境:Access 2003 win XP CSVファイルをデータベース内のテーブルにインポートする、というプログラムを書いてるのですが、 Private Sub テスト() DoCmd.TransferText acImportDelim, "インポート定義", _ "tblImported", "C:\Temp.csv", True End Sub Cドライブにあるファイルのみしかインポートできず、これをダイアログボックスを呼び出してファイルを指定することなどはできるのでしょうか? 検索を行いまして、ctlDlg.Filename~などメソッドを使うといいなど記載されている記事もよく見かけますが、どのように利用すればいいのか少し戸惑っております^^; ご多用の中大変申し訳ありませんが、ご回答いただければ幸いでございます。 よろしくお願い致します。

  • Access VBA CSV取込でファイル指定

    いつもお世話になっております、この度もよろしくお願い致します。 作成環境:Access 2003 win XP CSVファイルをデータベース内のテーブルにインポートする、というプログラムを書いてるのですが、 Private Sub テスト() DoCmd.TransferText acImportDelim, "インポート定義", _ "tblImported", "C:\Temp.csv", True End Sub Cドライブにあるファイルのみしかインポートできず、これをダイアログボックスを呼び出してファイルを指定することなどはできるのでしょうか? 検索を行いまして、ctlDlg.Filename~などメソッドを使うといいなど記載されている記事もよく見かけますが、どのように利用すればいいのか少し戸惑っております^^; ご多用の中大変申し訳ありませんが、ご回答いただければ幸いでございます。 よろしくお願い致します。

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

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

  • excelVBA CSVの読み込み処理について

    excel2000を使用しております。 約10万行のcsvファイルを2万行づつシートを分けて読み込んで行きたいですが 可能でしょうか?  (1) テキストインポートダイアログを開いてcsvファイルを指定。  (2) 2万行づつシートに順次入力を行う。 お手数ですがご教授お願い致します。

  • Access csvの取込 ファイルは任意でテーブルは指定したいのですが?

    Access初心者です。2003を使用しています。 csvをマクロの「テキスト変換」で取り込ませています。取り込み時に定義どおりのテーブルを作成してくれるので、追加クエリを使い作業用テーブルに移動させ、処理にはそちらを使う仕組みにしています。 csv → データ用テーブル → 作業用テーブル(実際使うテーブル) csv取り込みには「テキスト変換」マクロでファイル名にパスを設定していますが、この部分を固定パスではなく任意に指定できるようにしたいのです。(取り込みたいcsvが決まったパス、ファイル名で無い場合があります。) 「コマンドの実行:インポート」ですとダイアログが出て任意に取込ファイルが指定できますが、インポートウィザードが起動してしまいます。使用者がウイザードで適切な定義を選びデータ用テーブルを作成してくれればいいのですが、私がツールを作りPCに詳しくない人が使うのでインポートウイザードを避けたいと考えます。 どなたか、マクロ「テキスト変換」でファイル名をダイアログなどで、任意に指定できるような手法をご存じないでしょうか? また、マクロでは無理なようでしたらVBAでしたら可能でしょうか? よろしくお願いします。

  • Accessのcsvエクスポートに関して

    Accessでのcsvエクスポートに関して、ご教授頂けましたら幸いです。 テーブルを基にした帳票形式のフォームがあります。チェックボックスにフラグが付い たデータのみcsvでエクスポートし、かつ、保存するファイル名をフィールドに値を使用 したいのですが、このような処理は可能でしょうか。 フォーム表示例: 商品コード 数量 チェックボックス A     10  チェックあり B     10  チェックなし この時、チェックありの商品コードAの情報のみをcsvでエクスポートし、かつ、ファイル名を「A.csv」としたい。あわせて、商品Bが対象となった場合は「B.csv」としたい。 お手数ですが、宜しくお願い致します。

  • VBA 複数のCSVファイルを一度にインポートするには?

    お世話になります ■概要 Accessのボタンで複数のCSVファイルを一括にひとつのテーブルにインポートさせたいのですが ■内容 テキストボックス、参照ボタン、実行ボタンをフォーム上に設置 参照ボタンでダイアログボックスを表示させCSV複数選択し 選択内容がテキストへ反映。 実行ボタンで選択された複数CSVをインポートさせたいです 当方初心者なのでVBA等の回答があれば幸いです ご教授よろしくお願い致します。

  • 【VAB】 エクセルファイルからCSVファイルをインポートするには

    お世話になります 実行可能か、わからず質問させて頂きます。 ■概要 ・CSVファイルをエクセルファイルにインポートしたいです ■設置 ・ユーザーフォームにテキストボックス、参照ボタン、実行ボタン を生成 ■動き ・参照ボタンをクリックするとダイアログボックスでCSVを選ぶ ・選んだあて先がテキストボックスに記載される ・実行ボタンでCSVをエクセルのシートに貼り付け (このとき貼り付ける列はVB内で決めておきたい、1,4,5,6,9列を貼り付けるなど) わかる方ご教授よろしくお願い申し上げます

  • Excelでcsvファイルをエクスポートしても、""を残しておきたい

    csvファイルをインポートしてExcelで編集し、また、csvファイルとして書き出すと、元のcsvファイルにはあった文字列の引用符「""」が消えてしまいます。 また、csvファイルを「テキストインポートウィザード」や「外部データの取り込み」を使って文字列の引用符を「なし」でインポートするとExcel上では問題ないのですが、csvで書き出すと「""""""」と引用符が2組増えています。 ご存知の方、元のcsvファイルとまったく同じ引用符でエクスポートする方法を教えてくださいm(_)m

専門家に質問してみよう