VBA方法将已关闭的Excel文档标记为;更名为;
我在一个目录中有很多Excel文档。新文件始终添加到目录中,但需要使用特定的文件名模式重命名它们(下面的过程VBA方法将已关闭的Excel文档标记为;更名为;,vba,excel,Vba,Excel,我在一个目录中有很多Excel文档。新文件始终添加到目录中,但需要使用特定的文件名模式重命名它们(下面的过程RenameFile会执行此操作)。为了解决这个问题,我必须遍历所有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的添加一个唯一的标识符来显示已处理的/