Excel VBA-通过将单元格内容添加到旧文件名的第一个空格中来将文件重命名到同一目录

时间:2018-09-23 00:19:42

标签: excel vba

到目前为止,已有此代码,其中:E1 =当前文件夹的路径; H =文件名:

Set fso = CreateObject(""Scripting.FileSystemObject"") 
FileSource = ""Range("E1") & Range("H" & (ActiveCell.Row)).Value"" 'original
FileDest = ""Range("E1") & Range("H" & (ActiveCell.Row)).Value"" 'new
fso.copyfile FileSource, FileDest, True 
If (fso.fileexists(FileDest)) Then 
fso.deletefile FileSource, True 
End If 

原始文件名中至少包含一个空格-类似于“ First Second Third.pdf”。我希望使用新文件名将单元格J1的内容放入新文件名中,例如“ First-CellsJ1-Second Third.pdf的内容”

10.8.18-澄清-在A6列中有一个文件名列表,在A3中有包含这些文件的文件夹路径。我试图通过将单元格J1的内容添加到旧文件名的第一个空格中来完成这些文件的重命名。并一次只执行一个文件,在活动行中执行一次。

2 个答案:

答案 0 :(得分:1)

这些引号不是必需的;实际上,它们阻碍了工作表单元格的读取。

替换应该能够将第一个空格更改为J1单元中的任何空格。

Set fso = CreateObject("Scripting.FileSystemObject") 
FileSource = Range("E1") & Range("H" & ActiveCell.Row).Value 'original
FileDest = Range("E1") & Range("H" & ActiveCell.Row).Value 'new
fso.copyfile FileSource, replace(FileDest, chr(32), range("J1").value, 1, 1), True 
If (fso.fileexists(FileDest)) Then 
    fso.deletefile FileSource, True 
End If 

答案 1 :(得分:1)

您可以使用InStr函数来查找第一个空格的位置。然后使用LeftRight构建新的字符串。

示例:在单元格J1中,我放置了文本Contents of J1。以下是我使用的每个变量的代码和输出,其中String2是您请求的输出

Dim String1 As String 'Original String
Dim Space1 As Integer 'First Space Location
Dim String2 As String 'Final String
Dim Insert As String 'Contents of J1

String1 = ThisWorkbook.Name
Space1 = InStr(String1, " ")
Insert = ThisWorkbook.Sheets("Max").Range("J1")
String2 = Left(myString, Space1) & Insert & " " & Right(String1, Len(String1) - Space1)

enter image description here