我有下面的代码,它将列出的后缀和前缀添加到“B”列中列出的文件名中。但问题是,它在文件扩展后添加后缀。我想在文件名末尾添加文本。 即如果文件名是test.txt而我想要,1test9.txt但代码将其重命名为1test.txt9
Sub Add_Pre_Suf()
Dim Pre, Suf As String
Dim r As Range
Pre = Range("C2").Value
Suf = Range("D2").Value
Range("B2").Select
'Range(Selection, Selection.End(xlDown)).Select
Range("B2:B" & Range("B" & Rows.Count).End(xlUp).Row).Select
With Selection
For Each r In Selection
r.Value = Pre & r.Value & Suf
Next
End With
RenameFiles
End Sub
答案 0 :(得分:2)
您可以使用Scripting.FileSystemObject
。只需添加对Microsoft Scripting Runtime的引用:
With New Scripting.FileSystemObject
Dim filePath As String
filePath = r.Value
r.Value = Pre & .GetBaseName(filePath) & Suf & "." & _
.GetExtensionName(filePath)
End With
答案 1 :(得分:1)
您看到此行为的原因是您的B列已经具有文件扩展名。您可以从列中拆分文件扩展名,并在添加文件扩展名之前添加后缀。您可以更改代码以执行类似操作。
With Selection
For Each r In Selection
r.Value = Pre & left(r.Value,find(".",r.Value)-1) & Suf & right (r.Value,len(r.Value)-find(".",r.Value)+1)
Next
End With
编辑:一个更好的代码,适用于任意数量字符的扩展。
答案 2 :(得分:1)
这应该很好地完成工作: -
Sub Add_Pre_Suf()
' 21 Mar 2017
Dim Pre As String, Suf As String
Dim Splt() As String
Dim Ext As String
Dim R As Long, Rend As Long
Pre = Range("C2").Value
Suf = Range("D2").Value
Rend = Cells(Rows.Count, "B").End(xlUp).Row
For R = 2 To Rend
With Cells(R, 2) ' 2 = "B"
If Len(.Value) Then
Splt = Split(.Value, ".")
Ext = Splt(UBound(Splt))
ReDim Preserve Splt(UBound(Splt) - 1)
.Value = Pre & " " & Trim(Join(Splt, ".")) & " " & Suf & "." & Ext
End If
End With
Next R
RenameFiles
End Sub
在调用此代码时要小心,因为它没有指定工作表,因此处理ActiveSheet。如果没有先检查名称是否符合我的预期,我就不会调用'RenameFiles'程序。
请注意,Range("C2")
可能会被称为Cells(2, 3)