静粛に、只今統計勉強中

仕事でデータ分析をすることになったバリバリ文系アラフィフのおっさんが、独学で統計の勉強を始めました。

【備忘録】MS AccessのテーブルにUTF-8のCSVをインポートするときに生じる不具合コンボの切り抜け方3

ここまで、AccessのテーブルにUTF-8CSVをインポートする際に生じる不具合の回避策として、

  1. CSVANSI規格で保存しなおしてからインポート
  2. UTF-8(ボム付)のCSVExcelで開いてExcel形式で保存してからインポート

という2つの方法があるが、どちらも万全とは言えない、というお話をしてきました。

以下では、少々手間はかかりますが、制約なし&Acccess上で完結できる解決法をお示ししたいと思います。

 

UTF-8CSVを選択して、【OK】をクリック。

f:id:cyclo-commuter:20201118140405p:plain

 

【設定】をクリック。→コードページで「Unicode(UTF-8)」を選択。→【OK】をクリック。→【次へ】をクリック。

f:id:cyclo-commuter:20201118140624p:plain

 

「先頭行をフィールド名として使う」にチェックを入れ、【設定】をクリック。

f:id:cyclo-commuter:20201118140912p:plain


255文字以上のフィールドを選択して、データ型を「長いテキスト」に変えていきます。

f:id:cyclo-commuter:20201118141210p:plain

 

フィールドの表示が途切れたら、その先のフィールドを直接入力していきます。

f:id:cyclo-commuter:20201118141753p:plain

 

最後のフィールドまで入力できたら、【保存】をクリック。

f:id:cyclo-commuter:20201118142130p:plain

 

適当な定義名を付けて、【OK】をクリック。→テキストインポートウィザード画面に戻ったら、【完了】をクリック。

f:id:cyclo-commuter:20201118142249p:plain

 

残念ながら、まだエラーは解消されません・・・

f:id:cyclo-commuter:20201118142753p:plain

 

エラーの内容を確認すると、インポート定義上で直接入力したフィールドのデータ型(長いテキスト)が反映されていないことがわかります。

f:id:cyclo-commuter:20201118143544p:plain

 

インポート先のテーブルをデザインビューで見てみましょう。

f:id:cyclo-commuter:20201118143817p:plain

 

インポート定義で直接入力したフィールドのデータ型がすべて「短いテキスト」になってしまっています。

f:id:cyclo-commuter:20201118144049p:plain

つまり、テキストインポートウィザードではUTF-8CSVをまともにインストールすることはできない(場合がある)! ということです。よろしい、ならばVBAだ!!

 

デザインビューで、必要なフィールドのデータ型を「長いテキスト」に変更します。

f:id:cyclo-commuter:20201118144258p:plain

 

テーブルを保存し、データシートビューで開いたら、全レコードを削除します。

f:id:cyclo-commuter:20201118144450p:plain

 

さて、ここからがハイライトです。

 

[作成]から[フォームデザイン]をクリック。

f:id:cyclo-commuter:20201118145249p:plain

 

フォームにボタンを一つ追加し、ボタンの上で右クリック。→[イベントのビルド]をクリック。

f:id:cyclo-commuter:20201118145509p:plain

 

「コードビルダー」をクリック。→【OK】をクリック。

f:id:cyclo-commuter:20201118145638p:plain

 

コードペインに以下のように入力します。

f:id:cyclo-commuter:20201118150328p:plain

簡単に解説すると、

  • DoCmd.TransferText acImportDelim 区切り記号でフィールドを分割してデータを取り込む を意味します。
  • , "Kaken_インポート定義" 上の作業で保存した定義名です。
  • , "KAKENN~1" インポート先のテーブル名です。
  • , "C:\Users\2ftn8n2\Downloads\kaken.csv" インポート元のCSVのパスです。ファイル名の中に半角ピリオドがあるとエラーになるので、注意してください。
  • , True 先頭行をフィールド名として使う を意味します。

 

適当な名前を付けてフォームを保存し、フォームビューで開きます。

f:id:cyclo-commuter:20201118152309p:plain

 

ボタンをクリックします。

f:id:cyclo-commuter:20201118152406p:plain

 

無事、インポートできました!

f:id:cyclo-commuter:20201118152549p:plain