VBA方法将已关闭的Excel文档标记为;更名为;

VBA方法将已关闭的Excel文档标记为;更名为;,vba,excel,Vba,Excel,我在一个目录中有很多Excel文档。新文件始终添加到目录中,但需要使用特定的文件名模式重命名它们(下面的过程RenameFile会执行此操作)。为了解决这个问题,我必须遍历所有excel文档,并只重命名以前未重命名的文档 问题是我无法确定文件是否已经重命名。我的想法是,我应该以某种方式将文档标记为“重命名”。嗯,如果我打开每个文档并设置文档属性或其他隐藏变量,这很容易。但这种解决方案会迫使我打开目录中的每个文档,查看属性是否已定义,然后再次关闭它并继续下一步。这太费时了 我需要的是一个方法,以某

我在一个目录中有很多Excel文档。新文件始终添加到目录中,但需要使用特定的文件名模式重命名它们(下面的过程
RenameFile
会执行此操作)。为了解决这个问题,我必须遍历所有excel文档,并只重命名以前未重命名的文档

问题是我无法确定文件是否已经重命名。我的想法是,我应该以某种方式将文档标记为“重命名”。嗯,如果我打开每个文档并设置文档属性或其他隐藏变量,这很容易。但这种解决方案会迫使我打开目录中的每个文档,查看属性是否已定义,然后再次关闭它并继续下一步。这太费时了

我需要的是一个方法,以某种方式标记/标记/标记每个重命名的文档。无需打开文档,即可访问此标签/标记/标志。有什么想法吗

Sub RenameExcelFiles(InFolder As String)
    Dim ExcelFile As String

    ExcelFile = Dir(InFolder & "\*.xlsx")

    Do While ExcelFile <> ""
        If Not ExcelFileHasProperty("Is already renamed") Then
            RenameFile ExcelFile  ' My own rename function
            SetExcelFileProperty "Is already renamed" 
        End If
        ' Fetch Next Excel file...
        ExcelFile = Dir()
    Loop

End Sub
子重命名EXCELFILES(InFolder作为字符串)
将文件设置为字符串
ExcelFile=Dir(InFolder&“\*.xlsx”)
执行Excel文件“”时执行的操作
如果不是ExcelFileHasProperty(“已重命名”),则
RenameFile Excel文件“我自己的重命名函数”
SetExcelFileProperty“已重命名”
如果结束
'获取下一个Excel文件。。。
ExcelFile=Dir()
环
端接头

最佳方案解决方案(我能想到)-您的excel函数可能非常独特-例如,以
结尾\u重命名yyyymmmddhhmmss
。 然后,只需将文件名按
\u
拆分,并检查它是否包含
\u重命名的*
一词。像这样:

Public Sub TestMe()

    Dim name As String
    name = "someName_renamed2018FEB02122755"

    Dim newName As String
    newName = Split(name, "_")(UBound(Split(name, "_")))

    If InStr(newName, "renamed") Then
        Debug.Print "Document is renamed!"
    End If   

End Sub

如果他们已经被重命名了,他们不是已经有了模式吗?使用Dir循环文件夹,仅当找不到模式时才添加到集合(例如)。然后循环集合进行重命名。如果他们有正确的模式,你无论如何都会处理。好吧,假设模式是一个人的名字“Adam Smith.xlsx”。如果文件名为“My file.xlsx”,则该文件具有相同的模式,但尚未正确重命名。。。编辑:啊,你的意思是我应该重命名所有文件,即使它们已经被重命名了。。。隐马尔可夫模型。。我会考虑:)然后是的,根据@vityta的添加一个唯一的标识符来显示已处理的/