J'écris (VBA) un fichier .xltm dans Excel 2013. L'utilisateur de ce fichier va créer une instance de ce fichier, et devrait être capable d'enregistrer une copie de cette instance dans un référentiel prédéterminé par moi-même.Excel 2013: Acquisition du répertoire d'un fichier de modèle .xltm dans l'une de ses instances
Pour cela, j'utiliser
RepoPath = WORKDIR & "\SETUP_REPOSITORY\" & ProjectName
ActiveWorkbook.SaveAs RepoPath & "\" & NewFileName
dans lequel le WORKDIR est le répertoire contenant le modèle. Ce dossier se trouve sur un disque partagé, et j'obtenir sa valeur à travers un sous-programme:
Sub SetDefaults()
WORKDIR = ActiveWorkbook.Path
End Sub
Celui-ci est appelé à l'ouverture du classeur dans le sous-programme Workbook_Open() dans l'objet ThisWorkbook.
Private Sub Workbook_Open()
Module1.SetDefaults
End Sub
Maintenant, cela fonctionne très bien quand je suis en train d'enregistrer une copie du fichier à partir du modèle, mais quand je crée une nouvelle instance du modèle (« template1 »), la variable WORKDIR est pas correctement initialisé, et je ne suis plus dirigé vers le bon dossier.
Donc je me demandais s'il y avait une autre façon de passer le chemin vers le modèle Excel à des instances de celui-ci?
Je ne peux pas simplement utiliser un chemin absolu puisqu'il est sur un lecteur partagé, et je suis un peu perdu pour des idées en ce moment (bien que je sois heureux d'admettre que je suis assez nouveau à VBA).
Toute aide et suggestions sont les bienvenus!
Merci d'avance.
Aah, merci pour la réponse, qui fait sens. Je crains cependant que la solution de contournement est impossible pour moi. L'utilisateur doit entrer des données avant d'enregistrer le fichier, donc en lecture seule ne fonctionnera pas. Peut-être Étirez-vous, mais savez-vous tout autre sens? – user3520462
Si vous définissez le fichier en lecture seule par ses propriétés Windows, tout ce que vous empêchez est l'utilisateur d'enregistrer le fichier en utilisant le même nom et l'emplacement. Ils peuvent toujours enregistrer - comme n'importe où ailleurs ou utiliser un autre nom de fichier. – jkpieterse