Skip to content

Instantly share code, notes, and snippets.

@hatena19
Created February 8, 2012 02:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hatena19/1764700 to your computer and use it in GitHub Desktop.
Save hatena19/1764700 to your computer and use it in GitHub Desktop.
【Access VBA】イレギュラーなCSVファイルのインポート
'テーブル T_Sample は事前に作成しておく
'フィールド構成
' 月日, 県, 受付か販売, 部門, 担当者, 商品1, 商品2, 商品3, 商品4, 商品5
' すべてテキスト型
' 使用例
' Call ImportTextData("C:\Users\hatena\Documents\Sample.csv", "T_Sample")
Public Sub ImportTextData(TextFile As String, TableName As String)
Dim strSQL As String
Dim strPath As String, strFileName As String
Dim rsCSV As DAO.Recordset, rsTable As DAO.Recordset
Dim f月日, f県, f受付か販売
Dim i As Long
strPath = Left$(TextFile, InStrRev(TextFile, "\"))
strFileName = Replace(Mid$(TextFile, Len(strPath) + 1), ".", "#")
strSQL = "SELECT * FROM " & strFileName & _
" IN '' 'Text;DATABASE=" & strPath & ";HDR=NO;';"
Set rsCSV = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
Set rsTable = CurrentDb.OpenRecordset(TableName, dbOpenTable, dbAppendOnly)
Do Until rsCSV.EOF
If rsCSV(0) Like "########" Then
f月日 = rsCSV(0)
ElseIf rsCSV(0) Like "* *" Then
f県 = Left$(rsCSV(0), Len(rsCSV(0)) - 3)
f受付か販売 = Right$(rsCSV(0), 2)
ElseIf rsCSV(0) <> "部門" And rsCSV(0) <> "合計" Then
With rsTable
.AddNew
!月日 = f月日
!県 = f県
!受付か販売 = f受付か販売
For i = 0 To 6
.Fields(i + 3) = rsCSV(i)
Next
rsTable.Update
End With
End If
rsCSV.MoveNext
Loop
rsCSV.Close: rsTable.Close
End Sub
20100228
長野 受付
部門 担当者 商品1 商品2 商品3 商品4 商品5
総務 A08さん 0 0 0 0 0
総務 A09さん 0 0 0 0 0
総務 A10さん 30 5 2 3 0
総務 A11さん 21 0 0 0 0
総務 A12さん 0 0 0 0 0
人事総括 A29さん 0 0 0 0 0
人事総括 A30さん 0 0 0 0 0
人事総括 A31さん 3 0 0 0 0
人事総括 A32さん 3 1 1 0 0
人事総括 A33さん 0 0 0 0 0
人事総括 A34さん 0 0 0 0 0
人事総括 A46さん 0 0 0 0 0
人事総括 A47さん 0 0 0 0 0
人事総括 A48さん 0 0 0 0 0
人事総括 A84さん 0 0 0 0 0
人事総括 A85さん 0 0 0 0 0
合計 57 6 3 3 0
20100228
長野 販売
部門 担当者 商品1 商品2 商品3 商品4 商品5
総務 A10さん 17 5 1 4 0
総務 A11さん 15 0 0 0 0
人事総括 A30さん 0 0 0 0 0
人事総括 A31さん 1 0 0 0 0
人事総括 A32さん 1 1 1 0 0
人事総括 A33さん 0 0 0 0 0
人事総括 A50さん 0 0 0 0 0
人事総括 A51さん 1 0 0 0 0
人事総括 A52さん 3 3 1 2 0
人事総括 A53さん 2 1 1 0 0
人事総括 A54さん 0 0 0 0 0
人事総括 A55さん 3 2 2 0 0
人事総括 A56さん 3 0 0 0 0
人事総括 A57さん 8 4 4 0 0
人事総括 A58さん 5 3 2 1 0
人事 A59さん 0 0 0 0 0
人事 A60さん 3 2 0 2 0
人事 A61さん 4 1 0 1 0
人事 A62さん 3 3 2 1 0
企画 A75さん 5 3 2 1 0
企画 A76さん 6 2 2 0 0
合計 121 47 28 19 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment