• 締切済み

テキストファイルをAccessへインポートする自動化の記述方法は?

Accessの画面より、コマンドボタンをクリックして、外部データベース(MDB)にテキストファイルをインポートするプログラムを作っているのですが、記述方法がわかりません。どなたか回答願います。カレントデータベース(mdb)へテキストファイルをインポートするプログラムは作成したことはあります。

  • mino3
  • お礼率26% (4/15)

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

どもども田吾作7です。 解説いたします。。。 "コード ページ" とは、記号 (文字、数字、区切り文字) を文字番号にマップするために、オペレーティング システムが使用する内部テーブルです。 異なるコード ページは、異なる国で使用される文字セットをサポートしています。コード ページは番号で表され、たとえば、コード ページ 932 は日本語の文字セットを表します。また、中国語の文字セットの 1 つは 950 というコード ページで表されます。 "Unicode" とは、ISO (International Standards Organization) の文字標準。Unicode は 16 ビット (2 バイト) のコード方式を使用して、65,536 文字の領域を確保しています。Unicode には、句読点、数学記号、および注釈記号が含まれています。また、将来の拡張用に空き領域も確保されています。 という説明ではわからないですよね? 要は、1バイトはきちんと1バイトに扱おうということです。 例をあげると・・・ LenB("ア") ← 半角 LenB("あ") ← 全角 これはどちらも2を返します。 固定長となると、全角は2バイト、半角は1バイトとして表現されます。 このままでは、半角文字が2バイトとして計算されるために、半角と全角を切り分ける必要があります。 試しに LenB(StrConv("ア"),vbFromUnicode) ← 半角 LenB(StrConv("あ"),vbFromUnicode) ← 全角 を行ってください。 半角と全角では、返り値が違うと思います。 半角は1 全角は2 ついでに・・・ LenB(StrConv("アあ"),vbFromUnicode) ← 半角と全角 返り値は3 これは例えをLen関数でしておりますが、MIDB,LEFTB,RIGHTBと言ったような、バイト数による文字列操作には欠かせない処理です。 実際に書いたコードでいうと 1.wkSpotStr = StrConv(wkStr, vbFromUnicode) で変換して 2.wkSpotStr = MidB(wkSpotStr, StartPosition, SpotFldLength) で、変換した文字列をStartPositionバイト目から、長さSpotFldLengthバイトの文字列を抜き出してます。 しかし、このままでは1番の処理を行っているために、何が書いてあるのかチンプンカンプンなので、抜き出した文字列を 3.wkSpotStr = StrConv(wkSpotStr, vbUnicode) により、私たちのわかる文字コードに戻しています。 ご理解いただけたでしょうか?

mino3
質問者

お礼

理解いたしました。そして、数々の回答ありがとうございました。 また何かあったらよろしくお願いします。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

どもども田吾作7です。 サンプルです。 Accessの1番目です。 解らなかったら、カキコしてください。

mino3
質問者

補足

サンプルを拝見させて頂きました。以下の部分が理解できません。 1.'文字列を Unicode からシステムの既定のコード ページに変換 wkSpotStr = StrConv(wkStr, vbFromUnicode) 2.'StartPositionバイト目からFiledLengthバイト文字列を抜き出す wkSpotStr = MidB(wkSpotStr, StartPosition, SpotFldLength) 3.'システムの既定のコード ページを使って、文字列をUnicode に変換 wkSpotStr = StrConv(wkSpotStr, vbUnicode) ※特に、1.2が理解できません。回答よろしくお願いします。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

どもども田吾作7です。 さらに質問&提案を追加します。 質問1.固定長テキストファイルと、取込み先のmdbのテーブルのフィールドの順番は一緒ですか? 質問2.固定長テキストファイルの後ろの空白部分は削除しますか? 提案3.固定長テキストじゃなければいけないのですよね?カンマ区切りじゃダメなんですよね? 提案4.ヘッダ項目を追加するのはダメですか? 提案3・4を行っている意味は、もしカンマ区切り・ヘッダ項目ありのCSVテキストファイルであれば、SQL文1文で、全データのインポートが可能だからです。 もしこの提案がダメであれば、一つ一つのフィールドデータを書き込んでいかなければなりませんので、ちょっとレスが遅れるかもしれません。 以上を回答いただけたら、コードを記入します。 でわでわ

mino3
質問者

補足

質問&提案についての回答です。 質問1.固定長テキストファイルと取込み先mdbのテーブルのフィールドの順番は一緒です。 質問2.固定長テキストファイルの後ろの空白部分は削除します。 提案3.4につきましては、顧客先の仕様上、カンマ区切り及びヘッダ項目の追加は、困難です。申し訳ありません。 以上です。再度回答よろしくお願いしましす。  

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

どもども田吾作7です。 (普段はプログラミングのVisualBasicのページに回答しております。) 補足お願いします。 1.B.mdbからA.mdbにデータをインポート?それともB.csvからA.mdbにデータをインポート? 2.DBの接続方式はDAOですか?ADOですか?(DAOならばCurrentDBが使えるはず) 3.取り込むデータがCSV(などのテキスト形式)である場合、ヘッダ項目が記されていますか? 以上のことがわかれば、コードを書くことが出来るのですが・・・ でわでわ

mino3
質問者

補足

補足を以下に記述します。 1.CSV(Txt)からmdbにデータをインポートします。CSV(Txt)ファイルは固定長です。 2.DBの接続方式は、DAOを考えております。 3.CSV(Txt)にヘッダ項目は、記されておりません。 再度、回答よろしくお願いします。

関連するQ&A

  • アクセス インポートかファイル形式を変えたい

    壊れたアクセスファイルの中身を 新規 Microsoft Access データベース.accdbにインポートするには? 今まで開けてたのに、いきなり開けなくなった、壊れたアクセスファイルがあります。 どうしても開けないので、 新規 Microsoft Access データベース.accdb を作りそこにインポートしようとしたら、 「データベースの形式を認識できません」 となり、インポートできません。 mdb形式なのが原因なのでしょうか? win7、オフィス2010ですが、いままでmdb形式で使えてましたが Windows Updateをしたら、使えなくなりました。 mdb形式が原因なら中身はそのままで壊れたファイルをaccdbに変えたいのですが どうすればいいですか? よろしくお願いします。

  • アクセス2007でのインポートエラー「カレントレコードがありません」に

    アクセス2007でのインポートエラー「カレントレコードがありません」について。 データをインポートしようとすると「カレントレコードがありません」と表示され、インポートできません。同時に作成されるインポートエラーテーブルを確認すると「型変換エラー」が原因のようです。 インポート先のファイル(名簿.accdb)は、従前使用していたアクセス2003のファイル(名簿.mdb)を2007対応にしたものです。(各オブジェクトの構成や保有データは同一) 試しに、同じテキストデータをアクセス2003ファイル(名簿.mdb)にインポートしたところ、正常に完了しました。 アクセス2003の入ったパソコンが廃棄予定であり、今後はアクセス2007ファイル(名簿.accdb)を使いたいのですが、非常に困っています。原因と対処法を教えてください。 ※インポートする元データはエクセルマクロ有効ブック(.xlsm)のため、コピーしてテキスト形式で保存しなおしています。

  • ACCESSで、テキストファイルをインポートしたい

    宜しくお願い致します。 ACCESSで、テキストファイルをインポートしてテーブルを作成したいのですが、ファイル→インポートを選択して、ウィザードを開く方法は分かるのですが、マクロを作成してインポートは出来ないでしょうか? excel、CSVファイルでしたら、「ワークシート変換」、「テキスト変換」のマクロでインポートしたりエクスポートしたり出来ると思うのですが・・・、 (1)テキストファイルをインポートしたり、エクスポートしたりする場合、どのようなマクロがあるのでしょうか。 (ためしに、「出力」マクロで、あるテーブルをCSVファイルにエクスポートしてみたのですが、カンマ区切りにできず、excelのような枠付きのテキストファイルになってしまいました。) (2)容量が大きいデータの場合は、テキストファイルでエクスポートしたほうが良い・・・という認識に間違いはありませんでしょうか。 質問が一つ増えてしまいましたが、宜しくお願い致します。

  • Access97 テキストインポート

    Access97でテキストファイルのインポートができません。 現象は…  ・インポートのファイルの種類でテキストを   選択できません(ありません)  ・インストール時に   データアクセス>データベースドライバ   では、テキスト・HTMLにチェックがついており、   セットアップ済みとなっています。   削除→インストール   レジストリ削除→インストールでも、セットアップ済みとなってます。 どなたかよい方法をご存知ではないでしょうか? 環境はWin98+Office97proです。 お願いします。

  • ACCESS複数テキストファイルをインポートについて

    ドライブC、フォルダ DETA 内に 数は100を越えるテキストファイルがあります "C:\DETA\*.txt"です  性質は 「区切り記号付(カンマ区切り)」です。 フィールドは全部で4つ データ型は全て同じで”テキスト型”です。 これを 同フォルダ内の 「データベース1.mdb」にインポートしたく思います。 本来ならウィザード使って終わりですが インポートするテキストファイルが100を越えるため  一度で何とかインポートしたいのですが 手段がわからずじまいです。 マクロという項目がありますが ここでは使えないのでしょうか? アクセスに関しては超入門レベルで もう少し調べろとお叱りをいただくレベルだと思います。 そこを何とぞご教授 お願いしたく思います。

  • アクセス(ACCESS) インポート定義について

    アクセスのインポート定義ファイルのコピーをしたのですが格納場所とかあるのですか? 現在使用中のMDBファイルが幾つかあります。MDBファイル毎にインポート定義ファイルが設定されてしまうので、別のMDBで同インポート定義ファイルを使用したい場合は、再度同じ仕様のインポート定義ファイルを作成しなくてはならないので面倒です。 他に、良いやり方がありましたらご教示願います。

  • Access97 Excelファイルのインポート

    はじめまして、こんにちわ。 早速ですが、質問させてください。 Access97で既存のテーブルにExcelファイルをインポートした際にエラーがでてインポートできないファイルがありました。その原因を調査している次第です。 Excelファイルは様々な担当者に作成いただく予定ですので、エラーの再現性を確認して、原因となる作業を予め禁止しておきたいと考えております。 (1)ファイル→外部データ取込→インポートからインポートするExcelファイルを選択し、インポートボタンを押したところ、『ファイル○○にアクセスできません。このファイルが存在するか、またファイルの形式が正しいか確認してください』と言うエラーが出ます。 実際にそのファイルは開けますし、同じように作成したファイルはインポートできるものもあります。 中身を全てコピーし、新規作成したExcelファイルに貼り付けて名前をつけて保存したものをインポートすると、問題なくインポートできました。 どういった作業をすると、上記エラーが出るようなファイルになってしまうのでしょうか。 (2)ファイル→外部データ取込→インポートからインポートするExcelを選択し、インポートボタンを押した後、ワークシートインポートウィザードで『先頭行をフィールド名として使う』をチェックすると、『先頭行にAccessフィールド名に使用できない文字が含まれています。』というエラーが出ます。 調べてみると、空白の列がフィールドとしてインポートされるようになっています。Excel上では何も表示されていない列で、その列を削除すればエラーがなくなります。 どういった作業をすると、空白の列や行がインポートされるようになってしまうのでしょうか。 お手数ですがよろしくお願い致します。

  • アクセスにインポートできません。

    Access97を使っています。 エクセルもcsvもインポートできません。 「外部データの取りこみ」→「インポート」で進み、 「ファイルの種類」を選択しようとしたところ、 一覧にエクセルもcsvも出てきません。 「Microsoft Access」と「ODBCデータベース」 のみです。 エクセルもcsvも検索はできますが、 インポートしようとすると 「データベース形式○○○を認識できません。」 というエラーメッセージが表示されます。 どうすれば解決できるでしょうか? よろしくお願いします。

  • Access2000でテキストインポートする時に

    毎日、他の会社から提供された全角半角混在の固定長テキストファイルを、 Access2000でデータベースにして作業を行っているのですが(OSはWindows2000)、 固定長テキストをインポートする際、ある文字を含むレコードだけが桁ずれ してしまうのです。具体的には、 「新橋1-7-1」「新橋1-7-1」 等はちゃんと読みこめるのですが 「新橋1―7―1」 の時に、「―」が一文字出現する毎に半角一文字分桁がずれて読み込んでしまいます。 どうも、テキストファイル上では「―」は全角なのですが、 インポートする時に半角文字として認識しているように思われます。 この原因と、対処法についてご教授頂きたいです。 なお、テキストファイル提供元と直接話が出来ず、作成時の環境は不明です。 ちなみに当方は、アクセスのマクロを少し使えるくらいでVBAは初心者、 VBはわからないです。

  • access7でのexcelファイルインポートについて

    初心者です。 excelで作成したcsvファイルを accessにインポートしたいのですが、 accessを使ったことがなく、新しくお試しでaccess7をダウンロードして、マイクロソフトのヘルプを参照しながらやってみましたができません。 ・「外部データ」、「excel」をクリック。 ・ファイル名「参照」をクリック。 ・「ファイルを開く」で「ファイルの種類」のところにxlxやxlsm等のファイルしか選択できなくなっています。 ファイル名を直接入力すると「~の情報にアクセスできません~」とウィザードが表示されます。 とても困っています。どこが間違っているでしょうか??

専門家に質問してみよう