MS Access Tips/Sample and VBA and Blog customize etc...

複数値フィールドを含むテーブルをエクスポートしたものをインポート

掲示板に下記の質問がありました。

hatena の Microsoft Access 掲示板|エクセルデータのインポート > スレッドNo.2194

要約すると、

社外の方にデータの更新、修正をしてもらうことになり、Accessを持っていないので Excel にエクスポートしてそれを渡して作業してもらい、その後Accessにインポートすることにしました。ところが複数値フィールドがあるとうまくインポートできない。」

これを解決する方法を紹介します。

複数値フィールドをインポート

難易度:

概要

複数値フィールドの概要は下記を参照してください。

複数値を持つフィールドの概要 - Access - Office.com

さて、複数値フィールドを含むテーブルをExcelやCSVにエクスポートしてみると、複数値フィールドは";"(セミコロン)区切りのデータとして一つのセルに格納されます。

複数値フィールドをエクセルにエクスポート

それをそのままインポートしても、複数値フィールドには入らなくてエラーになるようです。

エクセルファイルを、一時テーブルにインポートするか、リンクテーブルとして取り込んで、VBAで解析しながら、本テーブルに登録していくというコードを組むことになります。

サンプルコード

エクセルファイルをリンクテーブルとして取り込みます。このテーブル名を TblXls とします。

TblXls のフィールド構成は、ID, Fld1, Fld2 とします。
Fld2 に「スポーツ;その他」というようなデータが格納されているとします。

インポート先のテーブル名は、Tbl2
フィールド構成は、ID, Fld1, Fld2 とします。Fld2 が複数値フィールド

フォーム上にボタンを配置して、クリック時のイベントプロシージャを下記のように設定します。

このボタンをクリックすると Tbl2 に追加されます。複数値フィールドにも複数選択されるように追加されます。

コード解説

複数値フィールドは、Valueプロパティが、DAOレコードセットになっています。複数値フィールドで選択されている値がレコードセットに格納されます。

リンクテーブルのフィールドの ";"(セミコロン)区切りの値を、Split関数で分割して配列に格納して、それを Forループで、複数値フィールドのレコードセットに AdddNew していきます。

参考URL
DAO で複数値を持つフィールドを操作する方法

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/405-fc50aa34
該当の記事は見つかりませんでした。