导出多个访问表并删除回车符/换行符

时间:2019-06-07 21:07:05

标签: ms-access access-vba

我正在创建一个自动化过程,该过程可以导出50个我可以访问CSV的表。我遇到的问题是表中的一行包含回车符或换行符。当我将导出的CSV作为文本文件打开时,某些行被打乱了。

麻烦的行的数据类型都是文本。我需要在VBA脚本中集成语句的帮助,以删除任何字符前面的空格并删除任何换行符或回车符。

此表中只有一栏给我一些问题。

我尝试了似乎不起作用的Trim&Replace语句。可能是由于未正确编写它们造成的。

Option Compare Database
Option Explicit

Public Sub ExportDatabaseObjects()
On Error GoTo Err_ExportDatabaseObjects

    Dim db As Database
    Dim td As TableDef
    Dim d As Document
    Dim c As Container
    Dim i As Integer
    Dim sExportLocation As String

    Set db = CurrentDb()

    sExportLocation = "C:\File Path\"

For Each td In db.TableDefs 'Tables
    If Left(td.Name, 4) <> "MSys" Then
        CurrentDB.execute " UPDATE " & td.Name & " SET yourColumn='" & REPLACE(yourColumn, CHAR(13)+CHAR(10), "") & "' WHERE INSTR(1, yourColumn, CHAR(13)+CHAR(10))>0"
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".csv", True
    End If
Next td
Set db = Nothing
    Set c = Nothing

    MsgBox "All database objects have been exported as a csv file to " & sExportLocation, vbInformation

Exit_ExportDatabaseObjects:
    Exit Sub

Err_ExportDatabaseObjects:
    MsgBox Err.Number & " - " & Err.Description
    Resume Exit_ExportDatabaseObjects

End Sub

我的VBA脚本成功将访问数据库中的所有表导出到所需的文件夹中。现在,在数据投入生产之前,我需要一些帮助。

1 个答案:

答案 0 :(得分:0)

For Each td In db.TableDefs 'Tables
    If Left(td.Name, 4) <> "MSys" Then
        CurrentDB.execute " UPDATE " & td.Name & " SET yourColumn='" & REPLACE(yourColumn, CHAR(13)+CHAR(10), "") & "' WHERE INSTR(1, yourColumn, CHAR(13)+CHAR(10))>0"
        DoCmd.TransferText acExportDelim, , td.Name, sExportLocation & "Table_" & td.Name & ".csv", True
    End If
Next td

这应该有助于您查找和替换不良字符