Created
February 8, 2012 02:33
-
-
Save hatena19/1764700 to your computer and use it in GitHub Desktop.
【Access VBA】イレギュラーなCSVファイルのインポート
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'テーブル 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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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