• 締切済み
  • すぐに回答を!

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

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

共感・応援の気持ちを伝えよう!

  • 回答数4
  • 閲覧数653
  • ありがとう数3

みんなの回答

  • 回答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) により、私たちのわかる文字コードに戻しています。 ご理解いただけたでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • MS-ACCESS VBA で外部のMDBに直接インポート!?できませんか?

    表現がおかしいとおもいますが、適切な表現が出来ませんでした。 まず、プログラムとデータ部にMDBを分けてあります。 テキストファイル(csv)や、Excelファイル(xls)の複数のデータをMDBに変換し、データ部(MDB)に保存したいのですが、何か良い方法はありませんか? 私が知っている範囲だと先ず、テキストファイル(csv)をカレントMDBにインポートし、外部のデータ部MDBにエクスポート。 これでも出来るのですが、直接外部のデータ部MDBにテキストファイル(csv)を書き込めないでしょうか?

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

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

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

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

  • 回答No.3

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.2

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • ACCESSでのインポート処理の自動化

    ACCESS2002を使用して、CSVデータをもとにリストを作成するMDBを作成しました。 このCSVデータは不定期に更新され、更新するごとに新しいファイル名がついて準備されます。 今、マクロを使ってインポートの設定をしようと思ったんですが、ファイル名をきっちり指定しないとできないので、今回のように、そのつど、ファイル名が変わる場合はどのように設定をしていいのかわかりません。 私の希望としては、該当のフォルダを開くとこまでをマクロか何かでして、ファイルの選択は利用者にしてもらって、その後は自動的にインポート定義に基づいてインポートされるようにしたいんです。 こういうことは簡単にできないものでしょうか? VBとかもあまり使ったことがないので、マクロとかで指定できればそのほうが助かります。

  • win2000環境でaccess95のレポートのインポートがうまくいきません。

    win2000環境で、access95の別のmdbからレポートをインポートしようとすると、アプリケーションエラーが出ます。再度受入側のmdbを立ち上げると、accessのデータベースプロパティのファイルの構成にはレポート名が残り、データベースウィンドゥ上にはレポート名が上がってきません。どうも、mdb上には、インポートしようとしたレポートが残ってしまっているようで、以後動作が非常に不安定になります。MSではwin2000上でのoffice95の動作は保証していないと以前聞いたことがありますのでいたし方ないのかもしれませんが、会社で使っているmdbがまだaccess95環境ですし、accessはexcelやwordのように95と2000で互換性が全くありませんから、何とかaccess95で動かしたいと思っています。同様のケースで対処法ご存知の方いらっしゃいましたら、ご教授願いませんでしょうか?よろしくお願いします。

  • ACCESSでの大容量データインポート

    2.6Gもある大きなデータベースをテキストファイルでもらったので、エクセルでは開けないのでACCESSを使おうと思い、ファイル-外部データの取り込み-インポート で取り込もうとしたら、「ファイル<ファイル名>にはデータが含まれていません。」とエラーメッセージが出てしまいます。それで、テキストエディタでこのファイルを先頭の容量の限界まで読める分だけ読み込んでそれをそのまま保存して、同様にACCESSで読み込もうとすると今度は成功します。だけど、これでは元のデータの1%くらいしか読めません。何で、データは確かに存在しているのにこのようなエラーメッセージが出るのでしょうか。どなたかわかる方がいらっしゃったら教えてください。

  • AccessVBA でテーブルをインポートする方法

    AccessVBAでテーブルをインポートする方法 aaa.mdbの中のあるテーブルを、bbb.mdbにインポートする方法を教えてください。 ボタンで実行させたいのでVBAを使った方法をお願いします。

  • テキストファイルのインポートマクロが作成できない

    テキストファイルのインポートをマクロ作成しようと、 アクション:データベース変換 変換の種類:インポート データーベースの種類:テキストを選択しようとしたところ、選択リストにCSVやTXTの選択項目がありません。 Office proにて再インストールをしてみましたが、やはりTXTの選択項目は出てきませんでした。 どこかに設定があるのでしょうか。 宜しくお願いいたします。 ちなみにOSはXP、ACCESSは2000です。

  • Access 外部データ インポートエラー?

    Access2010で外部データ(Excel2010)インポートで以下のエラーメッセージが出ます。 このプロパティは外部データソースまたは 前のバージョンのJetデータベースエンジンで作成されたデータベースではサポートされていません。 Excelのデータは特殊なものはありません。日付は空欄と日付以外は入っていません。 他のデータは問題なくインポートされています。 宜しくお願いします。

  • テキストファイルの結合+改行について

    ユーザーからの注文が1行1テキストファイルで断続的にメールに添付されて配信されてきます。MS-DOSのCOPYコマンドとワイルドカードを利用して結合のバッチファイルを作成しましたが、テキストファイルの最終に改行がない為、長~いレコードになってしまい、データベース(Accessですが)にインポートできません。改行付で結合、あるいはその他の解決方法はないものでしょうか? win98+Access2000※Accessはマクロをチョロッといじれる程度の初心者です。 よろしくお願いします。

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

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

  • Excel → Access データをインポート

    OS WinXP Pro SP2 Office 2000 SP3 はじめまして。 マクロ(Excel VBA)を記述しているExcelファイル(Xls_Macro.xls)とインポート用データのExcelファイル(Xls_Data.xls)は別々のファイルになっていて、マクロを実行するとExcelファイルとインポート用データのExcelファイルのデータをAccessファイル(Access.mdb)にインポートする仕組みを開発しています。 インポート用データのExcelファイル(Xls_Data.xls)をADOで接続しレコードセットでデータを取得し、Accessファイル(Access.mdb)もADOで接続しレコードセットの「.AddNew」でAccessファイル(Access.mdb)に更新しようと考えています。 この考え方で問題ないのでしょうか!? もっと簡単な方法があるという方や、何か良い方法をお持ちの方 いらっしゃいましたら、よろしくお願いいたします。

  • 【再】AccessでExcelインポート時の制限

    お世話になります。 ※再投稿となります。 Access2010のExcelインポート時の制限につきまして、ご教授頂けたらと思います。 現在、VBAにてExcelをインポートし(※)、その後、SQLサーバーへエクスポートする処理を行っておりますが、Excelの「備考」の文字数が多くなってきた為、途中で文字が切れないよう修正することとなりました。 上記(※)の処理では予めローカルに空のテーブル(temp)を作成し、そこにExcelデータをインポートしております。  DoCmd.CopyObject "", "temp", acTable, "tempcopy"  DoCmd.TransferSpreadsheet acImport, 8, "temp", strFile, True tempはtempcopyをコピーして作成しており、今回tempcopyの「備考」をテキスト型からメモ型に変更しました。 これにより「備考」の文字は途中で切れなくなりました。 ※当該mdbはAccess2003にて作成。 しかし、このmdbをAccess2010で実行すると、文字が途中で切れてしまいます。 Access2010は2003とインポート時の仕様(制限)が異なるのでしょうか?その場合、どのようにすれば文字列が途中で切れずにインポートすることが出来るようになるのでしょうか。 以上、宜しくお願い致します。