Accessでの業務実施に関して質問です。

Windowsタスクマネージャーで定期的にAccessファイルを立ち上げて、
特定の場所にあるCSVファイルからテーブルにデータを取り込む処理を行いたいと思います。

CSVファイルは中国語のエンコードがされているため、合わせて指定をし、
ファイル名は「data_YYYY-MM-DD HHMM」として、HHまでを指定して取り込みます。

以下のURLを参考にしていますが。コードで教えていただければ。
http://accessclub.jp/bbs2/0047/beginter15165.html

回答の条件
  • 1人1回まで
  • 登録:
  • 終了:2015/09/13 12:55:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:cx20 No.1

回答回数607ベストアンサー獲得回数108

ポイント500pt

文字コードを指定して CSV ファイルをインポートするには、schema.ini (※) にて CharacterSet(文字コード)を定義することで可能です。
※ schema.ini は、テキストドライバが CSV ファイルを読み込む際に、データ構造を定義するファイルになります。

<サンプル用フォルダ構成>

C:\home\edu\access\csv
  test.mdb … インポート先 MDB
  test.csv … インポート元 CSV(UTF-8 形式)
  schema.ini … test.csv 用定義ファイル
  ImportToMdbFromCsv.vbs … インポート用 VBScript

<Access / tbl_test テーブル定義>

フィールド名データ型
主キーfield1数値型
 field2短いテキスト
 field3短いテキスト

<schema.ini>

[test.csv]
ColNameHeader=True
Format=CSVDelimited
CharacterSet=65001
Col1=field1 Integer
Col2=field2 Text Width 256
Col3=field3 Text Width 256

<test.csv>

"field1","field2","field3"
1,"こんにちは","日本語テスト"
2,"你好","中国語テスト"
3,"안녕하세요","韓国語テスト"

<ImportToMdbFromCsv.vbs>

' File Name : ImportToMdbFromCsv.vbs
' Usage : CScript ImportToMdbFromCsv.vbs
Option Explicit

' コードの簡略化の為、取り込み元ファイル名は「test.csv」としています。
' また、エラー処理(重複チェック等)は一切入っていない為、使用の際は適宜修正をお願いします。
Const strFilePath = "C:\home\edu\access\csv"
Const strMdbName = "test.mdb" ' インポート先MDB
Const strCsvName = "test.csv" ' インポート元CSV

Call Main()

Sub Main()
    Dim cn
    Set cn = CreateObject("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & strFilePath & "\" & strMdbName
    Dim strSQL
    strSQL = "INSERT INTO tbl_test " & _
        "SELECT * FROM " & "[Text;Database=" & strFilePath & "].[" & strCsvName & "]"
    cn.Execute strSQL
End Sub

<実行方法>

C:\C:\home\edu\access\csv> CScript ImportToMdbFromCsv.vbs

<実行結果>

field1field2field3
1こんにちは日本語テスト
2你好中国語テスト
3안녕하세요韓国語テスト

<参考>

■ 備忘録: ADODBでUTF-8のCSVを取り込む
http://my-business-adversaria.blogspot.jp/2012/08/adodbutf-8csv.html
■ テキスト ファイルのフィールドを定義する方法
http://blog.esrij.com/arcgisblog/2010/06/schemaini-301f.html

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません