尝试使用包含随机数的原始名称标识和重命名文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用包含随机数的原始名称标识和重命名文件相关的知识,希望对你有一定的参考价值。
您好我在尝试重命名文件夹中的文件(具有多个类似的文件),但即使使用通配符方法我也很难识别它。原始文件名如下所示:“2018_02_26_20180228_XXXXXX_GDW_Audit_CView_Report.txt”所以我唯一的识别方法是知道部分名称(“_GDW_Audit_CView_Report.txt”),因为多个文件的日期相同。我编写了以下代码,当我尝试运行它时,它会给出Path / File Access错误。任何帮助,将不胜感激。
Option Explicit
Sub HGDW_WKD()
Dim myDateTemp As String
Dim myDate1 As String
Dim myDate2 As String
Dim HGDW_CV1 As String
Dim HGDW_CV2 As String
myDateTemp = Format(Date, "yyyy-mm-dd")
myDate1 = Replace(myDateTemp, "-", "_")
myDate2 = Format(Date, "yyyymmdd")
HGDW_CV1 = myDate1 & "_" & myDate2 & "*_GDW_Audit_CView_Report.txt*"
HGDW_CV2 = "35999_HR_Global_Data_Warehouse_CView_PROD_" & myDate2 & ".txt"
Name "C:Usersf91955SourceFldr" & HGDW_CV1 As _
"C:Usersf91955SourceFldr" & HGDW_CV2
End Sub
我不确定这是不是你的意思,但你可以使用带通配符的Dir函数来尝试获取文件名。
所以说我有一个名为的文件
2018_02_28_20180228_XXXXXX_GDW_Audit_CView_Report.txt
我可以检索实际名称,如下所示。第一场比赛。如果没有找到真正的错误处理,则只测试该字符串被赋予的值不是初始化的值。您可以将文件夹路径作为变量传递。
Sub TEST()
Dim fname As String
fname = Dir("C:UsersUserDesktopTest*_GDW_Audit_CView_Report.txt")
If fname <> vbNullString Then
Debug.Print fname
End If
End Sub
传递文件夹变量和date1的示例(注意date1 =“2018_02_28”此时):
Sub TEST()
Dim myDate1 As String
myDate1 = Format$(Date, "yyyy_mm_dd")
'Debug.Print myDate1
Dim fname As String
Dim folderPath As String
folderPath = "C:UsersUserDesktopTest"
fname = Dir(folderPath & Application.PathSeparator & myDate1 & "*_GDW_Audit_CView_Report.txt")
If fname <> vbNullString Then
Debug.Print fname
End If
End Sub
为什么我使用Application.PathSeparator
?在尝试添加分隔符之前,您应该真正测试分隔符的存在。在这种情况下,我出于兼容性原因使用它。这将在Mac和Windows上使用正确的分隔符。
有关信息,请参阅:
引用:
如果您的代码处理路径和文件名,则需要使用适当的路径分隔符构建路径(Mac的冒号,Windows的反斜杠)。更好的方法是避免对路径分隔符进行硬编码并使用VBA来确定它。以下语句将路径分隔符分配给名为PathSep的变量:
PathSep = Application.PathSeparator
参考:
http://www.excelfunctions.net/vba-dir-function.html
以上是关于尝试使用包含随机数的原始名称标识和重命名文件的主要内容,如果未能解决你的问题,请参考以下文章
管道字符串与变量中的文件夹到 findstr - 复制和重命名文件