Accessのインポート定義を編集する方法

当ページのリンクには広告が含まれています。
インポート定義編集
  • URLをコピーしました!

AccessにExcelファイル・CSVファイルからデータをインポートする際は、インポートするデータの形式をフィールド毎に指定することができます。

一時的な対応であれば毎回指定しても良いのですが、定期的に実行する運用の場合、定義を予め保存しておいて呼び出すだけの方が効率的です。

そのための定義が「インポート定義」です。

通常、Accessのウィザード通りに定義を保存すれば次回からインポート定義を呼び出すだけで即インポートを実行できるのですが、項目が追加になった場合や型を変更したい場合、インポート定義が不要になった場合などどうすれば編集できるのでしょうか?

この記事ではウィザードを利用せずに「インポート定義」の編集、確認する方法を紹介します。

既存のテーブルに追加でインポートする場合、ウィザードでフィールド型が表示されない現象に遭遇しています(Access2007)。こういった場合にもインポート定義を直接編集できると便利です!

目次

ナビゲーションウィンドウにシステムオブジェクトを表示する

ナビゲーションオプション

ナビゲーションウィンドウのヘッダー行を右クリックしてナビゲーションオプションから「システムオブジェクトを表示」にチェックをつけます。

ナビゲーションオプション

尚、Accessのオプションからカレントデータベース→ナビゲーションオプションボタンクリックでもシステムオブジェクトを表示できます。

インポート定義が保存されているテーブルの確認

インポート定義が格納されているテーブルは以下の2つです。

  • MSysIMEXSpecsテーブル
  • MSysIMEXColumnsテーブル

MsysIMEXSpecsテーブルが定義のマスタで、MSysIMEXColumnsテーブルががインポート項目の各フィールド定義となっています。
いわゆる「1:多」のテーブル構成です。

リレーション

上記のテーブルの各フィールド構成は以下の通りです。

テーブル名:MSysIMEXSpecsテーブル

フィールド名KEY概要
DateDelim日付区切り記号
DateFourDigitYear西暦を4桁で表示
DateLeadingZeros日付に0を表示
DateOrder日付のソート順
0:”日月年”、1:”日年月”、2:”月日年”、
3:”月年日”、4:”年日月”、5:”年月日”
DecimalPoint小数点記号
FieldSeparatorフィールドの区切り文字
FileType文字コード
SpecIDオートナンバー型の定義ID
SpecNameインポート定義の名称
SpecTypeファイル形式
1:区切り記号付き、2:固定長、4:HTML
StartRow0:先頭行をフィールド名として使わない、
1:先頭行をフィールド名として使う
TextDelim文字列の引用符
TimeDelim時刻区切り記号

テーブル名:MSysIMEXColumnsテーブル

フィールド名KEY概要
Attributesハイパーリンク型の場合 dbHyperlinkField、他は 0
DataType1:Yes/No型
2:バイト型
3:整数型
4:長整数型
5:通貨型
6:単精度浮動小数点型
7:倍精度浮動小数点型
8:日付/時刻型
10:テキスト型
11:OLEオブジェクト型
12:メモ型
FieldNameフィールド名
IndexType0:インデックスなし
1:重複ありインデックス
2:重複なしインデックス
SkipColumnインポートをスキップするかどうかのフラグ
0:スキップしない
-1:スキップする(=インポートしない)
SpecIDインポート定義のキー
Start固定長の場合、開始位置
Width固定長の場合、文字数

インポート定義テーブルのリレーション

2つのテーブルはSpecIDを連結キーとして構成されています。

これらのテーブルを直接編集することでインポート定義の編集が可能です。

親テーブル(MSysIMEXSpecs)のSpecName(テキスト型)が主キーになっていて、SpecID(数値型)で結合するって、ちょっと不自然な気がするのは私だけでしょうか・・・。

インポート定義を編集する

インポート定義を削除する際は、多側(MSysIMEXColumnsテーブル)のデータから削除しましょう。(※1側から削除してもエラーにはなりませんが念のため・・・)

Accessのウィザードで定義を変更するとSpecIDは一旦削除され(両テーブル)、新たなSpecIDが採番されます。

おまけ

色々不思議なことが起こりますが、ウィザードでインポート時、型エラーでインポートできな事象が発生しました

日付の値【2018年8月6日 17時06分23秒】が入った項目をテキスト型のフィールドにインポートする予定でした。

インポート定義は正しく設定しているので型エラーの意味が分かりませんでしたが、ウィザードの2ページ目でインポート定義を適用させることでエラーが発生しなくなりました。

つまり、インポートウィザードの1ページ目で「設定」から定義を適用するとエラーで、2ページ目で適用するとエラーにならないという現象です。

Access2007における現象なので、2010以降は大丈夫なのかもしれません。

お困りの方がいたら、2ページ目以降でインポート定義を適用してみてください。

💡 AccessのCSVインポートで悩んでいる方へ
Access職人だった私が年収2倍のPMになった話

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次