2010-11-03 4 views
1

Est-il possible à l'aide de VBA pour fermer tous les fichiers ouverts dans un répertoire donné, avec en sachant nom de fichier/etc ... l'extensionFermer automatiquement les fichiers ouverts dans un répertoire spécifique

EDIT .....

J'ai des répertoires liés aux enregistrements, par exemple l'enregistrement pour Joe Bloggs a un répertoire créé lié au nom par exemple Bloggs, Joe

Si l'utilisateur change les noms des enregistrements, le nom du dossier doit donc refléter cela.

Actuellement, je peux changer le nom du répertoire sans problème si tous les fichiers associés sont fermés. Aussi, si ces fichiers sont ouverts, je peux inviter l'utilisateur à fermer les fichiers associés.

Je me demandais s'il serait possible de fermer/inviter à enregistrer les fichiers?

EDIT DE NOUVEAU .....

Pour compliquer encore les choses, il y a d'autres répertoires dans l'arborescence des répertoires qui se rapportent à chaque enregistrement. (Je aurais dû être plus clair au début, la base de données stocke les informations sur les réclamations d'assurance des ménages)

Vous avez donc une structure de répertoire comme ceci:

Nom d'utilisateur _ID \ 1ère ligne d'adresse de la propriété _ID \ RÉCLAMATION No _ID

Merci à l'avance pour toute aide

Vive

Noel

+0

Pourquoi voudriez-vous risquer de corrompre un fichier par la force de le fermer? Je pense que ce que vous demandez de faire est complètement déconseillé. S'il y a des fichiers ouverts dans le chemin, vous dites simplement à l'utilisateur, et soit ils ferment les fichiers, soit vous ne pouvez pas terminer le renommer. –

+0

@David, pris à bord de votre conseil et évitera de forcer la fermeture des fichiers ouverts. – noelmcg

Répondre

2

Je pense que vous pouvez unco mplifier cette chose. Votre table Utilisateurs doit avoir une clé primaire, user_id. L'ID utilisateur de Joe Bloggs est 27. Créez le dossier pour lui sous le nom C: \ userdirs \ 27. Si le nom de Joe est modifié plus tard, son id_utilisateur et son dossier utilisateur peuvent rester les mêmes.

Si vos utilisateurs ont besoin d'accéder à ces dossiers par leur nom d'utilisateur plutôt que par user_id, créez des raccourcis pour ceux-ci.

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 

Ensuite, vous pouvez créer un raccourci vers le répertoire utilisateur de Joe Bloggs comme ceci:

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

@HansUp Bravo pour l'idée. J'étais en train d'utiliser ID dans le nom du répertoire mais je n'avais jamais eu cette idée. Pourrait certainement me sauver un peu d'ennuis. Ma seule préoccupation est quand l'utilisateur serait confronté avec les numéros d'identification seulement, comme cela se produirait quand ils se déplacent vers le haut et vers le bas des répertoires et ne verrait pas les raccourcis conviviaux. – noelmcg

+0

@glinch Je ne suis pas sûr de comprendre. Si vous créez plutôt les raccourcis dans le même dossier que les répertoires de l'utilisateur (C: \ userdirs), n'importe qui naviguant dans l'Explorateur Windows peut voir à la fois les dossiers numérotés et les raccourcis basés sur le nom. Cela pourrait-il fonctionner? – HansUp

+0

@HansUP Désolé, j'aurais dû être plus clair avec mon problème. J'ai ajouté une modification ci-dessus. Le seul problème avec votre suggestion serait que le répertoire deviendrait assez grand, avec un grand nombre de dossiers numérotés qui peuvent être un peu confus. Ce ne serait pas la fin du monde, mais ne semblerait pas très bien rangé. – noelmcg

Questions connexes