【问题标题】:Exporting multiple access tables and removing carriage returns/ line breaks导出多个访问表并删除回车/换行符
【发布时间】:2020-07-14 16:40:40
【问题描述】:

我正在创建一个自动化流程,用于导出我可以访问 CSV 的 50 个表。我遇到的问题是表格中的一行混有回车符或换行符。当我将导出的 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 脚本成功地将我的 access 数据库中的所有表导出到我想要的文件夹中。现在我需要一些帮助,在数据投入生产之前清理数据。

【问题讨论】:

  • 这里没有修剪/替换。很高兴看到您已经尝试过什么。
  • 您能否更具体地说明“删除任何字符前面的空格”的含义。如果这是您想要的,那么它会将您的评论变成这样:"toremovethespacesinfrontofanycharacters".
  • 您要么必须修改表中的数据,要么导出修复值的查询。
  • 我需要帮助来编写此替换或修剪语句。我不确切知道如何编写它或将它放在我上面的 VBA 脚本中。这个有问题的一些值包括:“t”或“ab”或“b 带回车”

标签: vba ms-access


【解决方案1】:
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

这应该可以帮助您查找和替换坏字符

【讨论】:

  • ^^ 那会出现在我的 VBA 脚本中吗?如果有,在哪里?
  • @ZZEE,备份你的表,先试试 Doug 提供的 UPDATE 语句。为了摆脱前导和尾随空格,请使用 TRIM 函数编写另一个 UPDATE 语句。
  • @ZZEE 这取决于你想处理它。这只是 SQL,但它是消除表中列值中的换行符的最简单方法。我会更新答案,向您展示如何为每个表执行此操作。
  • 请记住,如果您想点击超过 1 列,则需要更改此设置。
  • 我将提供的更新和替换查询 Doug 添加到我的 VBA 脚本中,它给了我一个语法错误。我用我的列名替换了 yourColumn。我需要在某处指定表名吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 2013-03-04
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多