【发布时间】:2022-01-10 21:59:59
【问题描述】:
我有一个文件夹 1,其中有两个名为“Head.csv”和“Col.csv”的 CSV 文件。我想重命名文件夹 1 中存在的所有 CSV 文件。我想添加到每个 CSV 文件的后缀是文件夹 2 中存在的另一个文件名。
文件名 1 = 我要重命名的实际 CSV 文件 文件名 2 = 想要将此文件名添加为后缀。此文件存在于其他文件夹中。
文件名的输出:Filename1 + _ + FileName2 + .csv
以文件夹 1 中存在“Head.csv”和“Col.csv”为例,而在文件夹 2 中,文件名为 general.txt。文件夹 2 中的文件名可以是任意名称。
例如:- Head_general.csv
Option Explicit
Dim ofso, ofolder1,ofolder2,objFile, folderName1,folderName2
Dim File,sNewFile,a
folderName1 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder1" ' .csv file
folderName2 = "C:\Users\ShantanuGupta\Desktop\DRUM\Folder2" ' .txt file with different filename
Set ofso = CreateObject("Scripting.FileSystemObject")
Set ofolder1 = ofso.GetFolder(folderName1)
Set ofolder2 = ofso.GetFolder(folderName2)
Set objFile = oFolder2.Files
filesuffix = ofso.GetBaseName(oFolder2.Files)
For Each File In oFolder1.Files
sNewFile = File.Name
If instr(sNewfile, "Head.csv") > 0 THEN
File.Name = Replace(File.Name, "Head.csv", "Head_" & filesuffix & ".csv")
End If
If instr(sNewfile, "Col.csv") > 0 THEN
File.Name = Replace(File.Name, "Col.csv", "Col_" & filesuffix & ".csv")
End If
Next
类型不匹配“GetBaseName”导致错误。
有什么帮助???
附件Here
【问题讨论】:
-
oFolder2.Files返回一个集合,即使只有一个文件,也需要对集合进行迭代获取每个文件。
-
@flakes 如果我迭代那么我如何将该后缀添加到文件中。
-
即使迭代,也只有一个文件,不会被覆盖。
For each objFile in oFolder2.Files : filesuffix = ofso.GetBaseName(objFile) : Next -
您只需将
filesuffix = ofso.GetBaseName(oFolder2.Files)行替换为上述内容即可。