我在编写VBA
以查找和替换部分文件路径时遇到困难。我需要在没有文件扩展名的情况下隔离文件名(即替换上一个\
和.flac
左侧的所有内容,如下例所示)
类型查找和替换涉及看起来像 -
的文件路径C:\用户\ MYNAME \桌面\ PhoneCallFolder1 \ 123456789_20140101120101.flac
C:\ Users \用户中文别名:\桌面\ PhoneCallFolder2 \ 123456789_19990101120101.flac
,结果应该是 -
20140101120101
19990101120101
感谢您的帮助。我现有的代码如下:
Columns("A:A").Select
Selection.Replace What:= _
"C:\Users\myname\Desktop\PhoneCallFolder1\" _
, Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
False, SearchFormat:=False, ReplaceFormat:=False
Selection.Replace What:= _
".flac" _
, Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
False, SearchFormat:=False, ReplaceFormat:=False
答案 0 :(得分:1)
您可以使用通配符替换任何路径,例如
With Columns("A:A")
.Replace What:= _
"*\", _
Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:= False, SearchFormat:=False, ReplaceFormat:=False
.Replace What:= _
".*", _
Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, _
MatchCase:= False, SearchFormat:=False, ReplaceFormat:=False
End With
答案 1 :(得分:0)
这是最简单的方法,因为你总是得到一个14个字符的字符串,从最后定位5个字符,如下所示。你可以使用看起来像这样的公式来做到这一点。
对于单元格A1:
=LEFT(RIGHT(A1, 19), 14)
然后将这个公式一直放下来。
我将详细说明这种方法。
VBA:
lastRow = Cells(Rows.Count, 1).End(xlUp).Row 'this only finds the last row
For x = 1 To lastRow 'This loops through all the rows
Cells(x, 1) = Left(Right(Cells(x, 1), 19), 14)
Next
答案 2 :(得分:0)
如果您需要一次处理一个替换件,您可以使用以下几个功能:
Function FileNameParse(strFile as String)
' Return a file name from a full path
FileNameParse = Left(strFile, InStrRev(strFile, "\") - 1)
End Function
Function FilePathParse(strFile as String)
' Return a directory from a full path
FilePathParse = Right(strFile, Len(strFile) - InStrRev(strFile, "\"))
End Sub