VBA查找并替换部分文件路径

时间:2014-01-11 23:48:39

标签: excel excel-vba vba

我在编写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

3 个答案:

答案 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