首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将关闭的Excel文档标记或标记为“重命名”的VBA方法

将关闭的Excel文档标记或标记为“重命名”的VBA方法
EN

Stack Overflow用户
提问于 2018-02-12 11:22:03
回答 1查看 54关注 0票数 1

我在一个目录中有很多Excel文档。新文件一直被添加到目录中,但它们需要使用特定的文件名模式重命名(下面的过程RenameFile会这样做)。要解决这个问题,我必须遍历所有excel文档,并且只重命名之前没有重命名的文档。

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

我需要的是以某种方式标记/标记/标记每个重命名的文档。必须在不打开文档的情况下访问此标记/标记/标志。有什么想法吗?

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-02-12 11:29:59

最好的案例场景解决方案(我可以想到)--您的excel函数可能是非常独特的--例如,结束于_renamedYYYYMMMDDHHMMSS。然后,只需将文件名拆分为_,并检查它是否包含单词_renamed*。如下所示:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48745295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档