【问题标题】:Automatically close open files in a specific directory自动关闭特定目录中打开的文件
【发布时间】:2010-11-04 02:06:57
【问题描述】:

是否可以在不知道文件名/扩展名等的情况下使用 VBA 关闭给定目录中所有打开的文件...

编辑.....

我有链接到记录的目录,例如 Joe Bloggs 的记录有一个与名称相关的目录,例如 Bloggs, Joe

如果用户更改记录名称,文件夹名称必须反映这一点。

目前如果所有关联文件都关闭,我可以更改目录名称没有问题。此外,如果这些文件已打开,我可以提示用户关闭相关文件。

我想知道是否可以关闭/提示保存文件?

再次编辑.....

为了使事情更加复杂,目录树中还有与每条记录相关的目录。 (我一开始应该更清楚,数据库存储家庭保险索赔信息)

所以你有一个这样的目录结构:

用户名_ID\物业地址第一行_ID\Claim No_ID

提前感谢您的帮助

干杯

诺埃尔

【问题讨论】:

  • 您为什么要冒着通过强制关闭文件来破坏文件的风险?我认为你的要求是完全不可取的。如果路径中有打开的文件,您只需告诉用户,他们要么关闭文件,要么您无法完成重命名。
  • @David,采纳了您的建议,将避免强制关闭打开的文件。

标签: ms-access ms-access-2007 vba


【解决方案1】:

我认为你可以简化这件事。您的用户表应该有一个主键 user_id。假设 Joe Bloggs 的 user_id 是 27。为他创建文件夹 C:\userdirs\27。如果以后乔的名字被更改,他的 user_id 和用户文件夹可以保持不变。

如果您的用户需要通过用户名而不是 user_id 访问这些文件夹,请为他们创建快捷方式。

Public Function CreateUserDirShortcut(ByVal pLinkFolder As String, _
        ByVal pLinkName As String, _
        ByVal pTargetFolder As String) As Boolean

    Dim objShell As Object
    Dim objLink As Object
    Dim strMsg As String
    Dim blnReturn As Boolean

On Error GoTo ErrorHandler

    Set objShell = CreateObject("WScript.Shell")
    Set objLink = objShell.CreateShortcut(pLinkFolder & Chr(92) & pLinkName & ".lnk")
    objLink.Description = pLinkName
    objLink.TargetPath = pTargetFolder
    objLink.Save
    blnReturn = True

ExitHere:
    Set objLink = Nothing
    Set objShell = Nothing
    CreateUserDirShortcut = blnReturn
    On Error GoTo 0
    Exit Function

ErrorHandler:
    strMsg = "Error " & Err.Number & " (" & Err.Description _
        & ") in procedure CreateUserDirShortcut"
    MsgBox strMsg
    blnReturn = False
    GoTo ExitHere
End Function

然后您可以像这样创建 Joe Bloggs 用户目录的快捷方式:

CreateUserDirShortcut "C:\shortcuts", "Bloggs, Joe", "C:\userdirs\27")

【讨论】:

  • @HansUp 为这个想法喝彩。我目前在目录名称中使用 ID,但从未接受过这个想法。当然可以为我省点麻烦。我唯一担心的是当用户只面对 ID 号时,就像他们上下移动目录并且看不到用户友好的快捷方式时会发生的那样。
  • @glinch 不确定我理解。相反,如果您在与用户目录 (C:\userdirs) 相同的文件夹中创建快捷方式,则在 Windows 资源管理器中浏览的任何人都可以看到编号文件夹和基于名称的快捷方式。这行得通吗?
  • @HansUP 对不起,我应该更清楚我的问题。我在上面添加了一个编辑。您的建议的唯一问题是目录会变得相当大,其中有大量编号的文件夹可能会有点混乱。虽然不会是世界末日,只是看起来不太整洁。
  • 如果编号文件夹加上快捷方式的总项目数太大,请考虑根据姓氏的第一个字母将它们分成 26 个子文件夹。虽然更复杂,但在我看来仍然比尝试确定文件是否在文件夹中打开以便您可以重命名它更容易。
  • @HansUp 为这个想法喝彩,我现在可能会接受 David 的建议,尽管我绝对可以理解这可能是一种有用的技术。再次感谢您的信息。
猜你喜欢
  • 2018-10-30
  • 2022-01-21
  • 1970-01-01
  • 2022-01-02
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2021-08-31
相关资源
最近更新 更多