【问题标题】:Macro or VB to clean up data after CSV import to ms accessCSV 导入到 ms 访问后使用宏或 VB 清理数据
【发布时间】:2016-02-12 05:40:27
【问题描述】:

目前,我每天提取 1 个 csv 文件,然后通过 excel 宏运行它以清理我的数据。清理后,我以 ms 访问将其导入我的表(我在数据库中只有 1 个表)。

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>

问题:
与其通过 excel 进行清理然后访问进行导入,是否可以导入 csv 数据文件,然后让访问为我清理我的数据,然后再将其附加到我的表中? 如果是,我该怎么做?

【问题讨论】:

    标签: vba ms-access macros


    【解决方案1】:

    这是我的 +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
    

    【讨论】:

      猜你喜欢
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-03
      • 2017-05-25
      相关资源
      最近更新 更多