<HOME  <お願い事項   <Access2002 TOP   <Access2000 TOP   <サイト内検索
 MS-Access97超入門>外部データの活用
 はじめに インポート(mdb) インポート(xls) インポート(txt) リンク(mdb) リンク(xls) リンク(ODBC) テーブルをエクスポート



■テキストファイルをインポート

さて、ここまでオッケーですか?

Accessのオブジェクトをインポートしてくるのはカンタンですね。
Access以外のアプリケーションソフトで作ったファイルも、専用のウィザード機能が働きますから、画面に添って細かい指定をすれば、なんとか取り込むことができそうです。

んじゃあ、それ以外のアプリケーションソフトの場合は?

「へべれけ家計簿ソフトっていうソフトの中に、お店のリストを入力してあるんだけど、これをAccessにインポートできないかしら」

うーん・・・。

まず、この表を思い出してください。

ソフトウェア名称 バージョンなど
FoxPro 2.x、3.0
dBASE III、III+、IV、および 5
Paradox 3.x、4.x、および 5.0
Excelワークシート 3.0、4.0、5.0、7.0、および 8.0
Lotus 1-2-3 ワークシート wks、.wk1、.wk3、および .wk4
区切り記号付きテキスト ファイル カンマ、タブ、またはほかの文字により区切られた値を持つファイル
固定長テキスト ファイル 各フィールドが、特定の幅になるように調整された値を持つファイル
HTML 1.0 (リストの場合)
SQL テーブル ODBC プロトコルをサポートするデータベースなど

オンラインヘルプにも同じリストがありますが、要するにFoxPro, dBase,Paradox,Excel,Lotus1-2-3以外のパソコンアプリケーションソフトとは、直接インポート等々のやり取りができないみたいなんですよね。

だって書いてないもん。パソコンソフトって、ソフトによってファイルの形式とかぜんぜん違うって、最初にお話しましたよね。
えー、じゃあ、あきらめて、印刷して紙を見ながらテーブルに1件ずつ入力するカー・・・

そうですねぇ。もしかしたらそれしか方法がないかもしれませんが、最後の手段にかけてみましょうか。

テキストファイルです。

どういうものかと申しますと、例えばWindowsのアクセサリのメモ帳で開くと

こんな風に、まるでワープロでちこちこ入力したみたいな状態で表示することができるファイルのことです。
とりあえずメモ帳とかワープロソフトで開いてみることができるファイルなら、何とかなると思います。

フツウはExcelのファイルとか無理に開いても、ばけばけ文字しか出てこないですもんね。

ばけるのは、Excelを使って開かないと見れないよ、ってことなんですけど・・。
テキストファイルはソフトに依存せず、とにかく全部文字としてとりあえず見ることができるタイプのファイルなんです。

もし、その「へべれけ家計簿ソフト」の中に、「テキストファイルで保存」という機能があれば、お店のリストを「へべれけ家計簿ソフト」以外のソフトでも見ることができるような形式に保存できるかもしれません。

「へべれけ家計簿ソフト」の操作ガイドを見て、テキストファイルで保存できそうだったら、そのお店のリストを適当な名前付けてテキスト形式で保存してください。

Accessで操作ができるのは、そこから先です。

テキスト形式で保存する機能が見つからない場合は、残念ですがAccessへのインポートはあきらめましょう。
でも、大概のパソコンソフトはなんだかの形でテキストファイル形式で保存できる機能、持ってると思うんですけどね。


じゃ、見てみますか。途中までは同じです。
メニューバーから[ファイル]→[外部ファイルの取り込み]を選んで、出てきたダイアログボックスの中で、取り込みたいファイルを指定するんですよね。

さて、テキストファイルの中にも、いくつか種類があるんです。上のメモ帳の図をもう一度じっくり見てみてください。
フィールドとフィールドの区切りと思しき場所に、カンマ(,)が打ってありますよねぇ。

コンピュータは、言葉の意味が分かるわけじゃないので、どこでデータが区切れて、どこまででひとつのフィールドとみなしてよいのか、区切り記号の法則みたいなのがいくつか定められてるんです。左から文字数でぶった切られちゃたまんないっすよね。このカンマ記号を頼りに、あ、ここから右が人名なのね、とわかるようにしてくれるわけです。

一般的にテキストファイルというと、txtという拡張子がつくみたいなんですけど、こういうカンマ区切りのテキストファイルのことを特別にCSV(しーえすぶい)ファイルなんて呼ぶことがありますね。これは大概の表計算ソフトでサポートしてる形式なんで、よく利用されているんじゃないかなと思います。

この辺区別せず、全部まとめてテキストファイルと呼ぶソフトもあるみたいなんで、あまりこだわらなくても大丈夫だと思いますけど・・・。

テキストファイルの一覧、出てきました?インポートしたいファイルを選ぶと、自動的にやっぱりウィザード機能が起動しますのでしばらく待ちましょう。


まずは「どんなテキストファイルなのか」指定します。

大きく分けて2種類ありまして、パソコンソフトのテキストファイルなら、区切り記号付きだと思いますが、下のプレビュー画面を見て状態を確認してくださいね。

で、もし「区切り記号付き」の方を選んだとして、次に進むと下のような画面が出てきます。
CSV形式のファイルならカンマで区切ってるはずなんで、下の状態でよいですけど、他の記号で区切られてそうな場合は、ファイルの中の様子を見ながら他の記号を選んでみてください。

大概、カンマかタブだと思うんですけどね。世の中にはいろんなパソコンソフトがありますからねぇ。いちおう細かいところ見ながら進めてみてくださいね。

で、Excelのシートをインポートするときと同じように、新しいテーブルを作るか、既に作成済みのテーブルの中にインポートするか決めるための画面が出てきます。

とりあえず新規テーブルにインポートするとして・・・。

で、カンマで区切った項目ひとつひとつをどういう形でどういうフィールド名でインポートするかとか、そういうことをちょこちょこっと決めます。
ピンク色のところをクリックすると、その項目に関する詳細を設定できますので、いろいろいじってみてください。

で、やっぱりお約束の「主キーをどうする?」っていう質問がきます。
うーん、いちおうあたしのデータには主キーにしても恥ずかしくないフィールドがあったんで、[番号]を主キーにしてみます。
こういうのは取り込んで来てから考えても遅くないかもしれないですけど、主キーにできるフィールドがあるなら、この時点で設定してしまった方が手間はかからないですね。

[ギャラ]っていうフィールドの中身は、テキストファイルの状態のときはカンマで区切られた数字の羅列なんですけど、インポートしてくるとき数値としてインポートしましたんで、数値フィールドになってると思います。会員番号とかIDとか、数字なんだけど数値じゃなくてテキスト型としてインポートしたい場合は、テキスト型に変更するとよいでしょう。

で、最後に「新規テーブルを作って、そこにインポートする」ならテーブル名を決めないといけないんで、テーブル名を付ける画面が出てきますね。
なんでもいいんですけど、なんかわかりやすい名前を。既存のテーブルにインポートするなら、テーブル名の確認だけして[完了]しましょう。


さあて、ちゃんとインポートできてます?

カンタンですよね。でも、ある程度「インポートしてくるファイルがどういうものなのか」知っておかないと、ちゃんとしたインポート処理ができない可能性もありそうです。

この他にもいろいろ考慮しなければならない点があると思います。いろいろ工夫して、お手持ちのデータを有効活用なさってください。


余談ですが、テキストファイルをインポートするときって、「どういう記号でどういうフィールド名で、どれとどれをインポートしてインポートしないフィールドはどれで・・・」と、いろいろ細かく指定できるんですよね。これらの指定内容を「インポート定義」として、なまえをつけてほぞんしておくことができるんです。これ、押さえておくと結構便利ですよ。

マクロのアクションの中に「テキスト変換」というのがあるんです。テキストファイルをインポート/エクスポートするときに使うんですけど、ここであらかじめ保存しておいた定義を指定できるんです。

ふつう、「どのファイルを」「何というテーブルに」インポートするのか、という指定しかマクロの中ではしないんで、毎朝本社から送られてくるホストコンピュータのデータをテキスト形式に保存したやつをインポートしなくちゃならない・・なんてとき、定義を保存しておけば、いつも決まった形式でインポートしてこれるって寸法です。

定義は、ウィザード画面の左下の[設定(V)...]ボタンをクリックすることで調節/保存することができます。

この画面で定義内容を確認し、よければ右端の[保存(V)...]ボタンをクリックして保存します。

名前はなんでもいいんですが、あとで「なんだっけ??」はなしですよ。それとこれはあたしの個人的な好みですが、半角のカタカナってのは、なんかいただけないような気がします・・・。あくまで好みですが・・・。

で、保存した定義は、マクロの「テキスト変換」アクションを使うとき利用できますので、繰り返しこの定義内容で、しかもオートマチックにインポートできるってわけですね。