Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv VBA导入长文件名_Csv_Ms Access_Import_Vba - Fatal编程技术网

Csv VBA导入长文件名

Csv VBA导入长文件名,csv,ms-access,import,vba,Csv,Ms Access,Import,Vba,我的桌面上有一个.csv文件。文件名很长,包含特殊字符,如括号,例如: [ABCD 012015] ACCT 1117 - Section A10 Grades-20150316_1937-comma_separated.csv 其中文件名的前36个字符是常量。文件名的其余部分在每次下载时都会更改。 我曾尝试使用VBA将文件导入带有DoCmd.TransferText的Access,但出现错误。我发现DoCmd.TransfertText可以处理的文件名长度有一个限制。 因此,我需要首先手动重

我的桌面上有一个.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表中更干净。 有什么建议吗?在开始将csv文件中的数据导入MS Access之前,我建议使用TIA

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

到现在为止你都试了些什么?您可以使用FileCopy命令;请看:我在这里和那里尝试了一些代码片段,但都不全面。你的建议有帮助。非常感谢。但是,它与名称OldPathName作为NewPathName有何不同?另外,我认为我更需要一种方法来从文件名中提取节号。这将有助于确保使用DoCmd.Transfertext.Thank将文件作为Access中的唯一表导入!我很欣赏这段代码。我试过了,但我也发现了一些更复杂的东西。我试图发布我的代码,但它不会像我想的那么容易发生。