0

我有数百个提供电子资金转账 (EFT) 信息的 PDF 表格。我的会计人员向我保证,银行帐号中的前导零很重要,需要维护。然而,由于表格的提交者使用不同的银行和不同的账户编号方案,所提供的账户号码的长度是可变的。

将 PDF 表单编译为电子表格后,如何格式化生成的 CSV 文件中的帐号字段以显示提交者提供前导零的前导零,而不在未使用前导零的帐号中添加前导零?

(我意识到这个问题的答案是,“前导零并不重要。”假设它们是,请幽默我。)

任何帮助表示赞赏。

4

2 回答 2

0

使用 Acrobat 从“从多个表单导出数据”对话框创建的 CSV 文件,我只是使用引用“Acrobat”的 VBA 来“重新输入”仅帐号字段的确切文本。事实证明,这比听起来要简单,因为 CSV 文件是在第一列中使用表单的文件名生成的。它还避免了重写整个过程,而是只对需要的部分进行编码。最困难的部分是找到如何将字段保持为文本格式。最后,我用

jso.getField("Account Number").valueAsString

完整代码如下:

Sub GetAccountNumbers()
  Dim AcroApp As Acrobat.CAcroApp
  Dim DisbForm As Acrobat.CAcroPDDoc
  Dim jso As Object
  Dim FormPath, FormFile As String
  Dim i, LastRow As Integer

  Set AcroApp = CreateObject("AcroExch.App")
  Set DisbForm = CreateObject("AcroExch.PDDoc")

  'This is the path to the folder contaioning the forms
  FormPath = "C:\FolderOfPDFForms\"

  'This is the number of the row containing the last record in the CSV file
  LastRow = 5000

  For i = 2 To LastRow
    FormFile = Worksheets(1).Range("A" & i).Value
    DisbForm.Open (FormPath & FormFile)
    Set jso = DisbForm.GetJSObject
    Worksheets(1).Range("B" & i).Value = jso.getField("Account Number").valueAsString
    DisbForm.Close
  Next i

  Set AcroApp = Nothing
  Set DisbForm = Nothing

End Sub

谢谢大家,您的意见。

于 2015-12-03T20:22:18.557 回答
0

可以以编程方式组装制表符分隔(或 CSV 格式,或任何结构化文本格式)的文本,将其制成数据对象,然后将其导出。在我的工作中,这种情况发生得比较频繁,最常见的是制表符分隔,但 FDF 或 CSV 也已使用该方法创建。如评论中所述,添加空格(或任何非数字字符)应保留前导零,直到您可以在 Excel 中设置列​​的格式。

导出文件后,您可以将其导入 Excel。

于 2015-12-03T07:41:22.943 回答