【问题标题】:VBA Importing long file namesVBA 导入长文件名
【发布时间】:2015-05-20 12:55:55
【问题描述】:

我的桌面上有一个 .csv 文件。文件名很长,并且包含特殊字符,例如括号,例如:

[ABCD 012015] ACCT 1117 - Section A10 Grades-20150316_1937-comma_separated.csv

其中文件名的前 36 个字符是一个常量。文件名的其余部分会在每次下载时更改。 我尝试使用 VBA 将文件导入到带有 DoCmd.TransferText 的 Access 中,但出现错误。我发现 DoCmd.TransfertText 可以处理的文件名长度是有限制的。 所以,我需要先手动重命名文件,然后才能使用 VBA。使用 VBA 重命名文件相对容易,但我想使用原始文件名中提供的信息,例如第 A10 节(这将使其独一无二,因为还有其他部分标记为 A01、A02 等)并将 . csv 文件为 A10.csv,因此这意味着搜索字符串并替换它。由于部分可以不同,我如何编写代码并重命名文件,然后用 VBA 导入它? 所以,到目前为止,我有一些零碎的东西,但不能把它们放在一起:

Name OldPathName As NewPathName

DoCmd.TransferText acImport, "AME_Grades", strTable, strPathFile, blnHasFieldNames

我正在使用导入规范 AME_Grades 使其在 Access 表中更清晰。 有什么建议? TIA

【问题讨论】:

  • 到目前为止您尝试过什么?您可以使用 FileCopy 命令;)请参阅:msdn.microsoft.com/en-us/library/2s1c774y%28v=vs.90%29.aspx
  • 我在这里和那里尝试了一些代码片段,但没有什么全面的。你的建议有帮助。谢谢你。但是,它与 NAME OldPathName As NewPathName 有何不同?
  • 另外,我想我更需要一种从文件名中提取节号的方法(方法)。这将有助于确保使用 DoCmd.Transfertext 将文件作为 Access 中的唯一表导入。

标签: csv ms-access import vba


【解决方案1】:

我建议在您开始将数据从 csv 文件导入 MS Access 之前使用FileCopy function

Dim OldPathName As String, NewPathName As String
OldPathName = "FullPathToVeryVeryLonLongLongFileName.csv"
NewPathName = "FullPathToShortFileName.csv"
FileCopy OldPathName, NewPathName  
DoCmd.TransferText acImport, "AME_Grades", strTable, NewPathName, blnHasFieldName

【讨论】:

  • 谢谢!我很欣赏这段代码。我试过了,但我也发现了一些更复杂的东西。
  • 我正在尝试发布我的代码,但它不会像我想象的那么容易发生。
猜你喜欢
  • 2015-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多