目前,我每天提取1个csv文件,然后通过excel宏运行它来清理我的数据。一旦清理,我将在ms访问中将其导入到我的表中(我在数据库中只有一个表)。
csv数据有7列...跟踪号码(;和端口码),后跟包裹信息和时间戳。
ColA必须只包含跟踪号,并且colB是端口代码。问题是数据文件包含在跟踪编号之前端口代码所在的行。这是我的宏派上用场分割并将正确的数据放在右栏中的地方。
Data sample: <br>
<h1>colA<h1/><br>
TN123456789;3-CTC-A1T <br>
TN987654321;3-TPO-B2 <br>
TN111122222;N-BKK-A1 <br>
N-BKK-B1;TN222211111 <br>
S-KKC-C1T;TN33333333
Result:<br>
<h1>colA<h1/><br>
TN123456789<br>
TN987654321<br>
TN111122222<br>
TN222211111<br>
TN33333333<br>
<h1>colB<h1/><br>
3-CTC-A1T<br>
3-TPO-B2<br>
N-BKK-A1<br>
N-BKK-B1<br>
S-KKC-C1T<br>
问题(S):
而不是通过excel进行清理然后访问导入,是否可以导入csv数据文件,然后让我访问清理我的数据,然后将其附加到我的表中?
如果是,我该怎么做呢?
答案 0 :(得分:0)
这是我的+1解决方案; - 读取文件 - 将文件清理到内存中 - 准备导入数据的输出文件
Sub demo_cleanbuffer()
'
'=======================================================================================
' Procedure : demo_cleanbuffer (Sub)
' Module : Module1 (Module)
' Project : VBAProject
' Author : misterneo
' Date : 12/02/2016
' Comments : **MANDATORY**
' Unit Test : 12/02/2016 10:10 | Description [OK]
' Arg./i :
' - [NO PARAM]
' -
' -
' Arg./o : ()
'
'Changes--------------------------------------------------------------------------------
'Date Programmer Change
'12/02/2016 GRT / GAZ Initiate
'
'=======================================================================================
'
Dim filen As Byte
Dim arrStr() As Variant
Dim arrReturn() As String
Dim buffer As String
'Note : String to erase
arrStr = Array("<br>", "<h1>", "<h1/>", "colA")
'Note : read file
Open "C:\tmp.txt" For Binary Access Read As #1
buffer = Space(LOF(1))
Get #1, , buffer
Close #1
'Note : erase unwanted string
For i = LBound(arrStr) To UBound(arrStr)
buffer = Replace(buffer, arrStr(i), "")
Next i
'Note : store each buffer line into array
arrReturn = Split(buffer, vbCrLf)
'Note : write data into text file
Open "C:\tmpo.txt" For Output As #1
For i = LBound(arrReturn) To UBound(arrReturn)
If Not Len(arrReturn(i)) = 0 Then Print #1, Trim(arrReturn(i))
Next i
Close #1
End Sub