2017-10-17 4 views
1

J'ai un classeur qui effectue une analyse et affiche ses résultats dans un fichier texte situé dans le même répertoire que le classeur. J'ai besoin d'exécuter ce code sur plusieurs ordinateurs afin que le répertoire local change. Auparavant, je viens d'utiliserVBA: Comment obtenir le chemin de fichier local d'un classeur qui utilise la nouvelle fonction de sauvegarde automatique (et qui est donc techniquement ouvert à partir de OneDrive)?

Application.ActiveWorkbook.Path 

mais puisque la fonction de sauvegarde automatique a été activée (ce qui est utile, donc je veux continuer à utiliser) ce retourne la filepath à distance dans onedrive.

Comment puis-je obtenir le chemin de fichier local?

+1

Essayé [CurDir] (https://msdn.microsoft.com/fr-fr/vba/language-reference-vba/articles/curdir-fonction)? –

+0

CurDir peut être modifié pendant l'ouverture du fichier et avant l'exécution du code? En supposant que le fichier est ouvert à partir d'un lecteur local, utilisez l'événement workbook.open pour écrire le curdir dans une variable globale. –

+0

Désolé pour le retard à y revenir - ont été absent. J'ai essayé CurDir et cela fonctionne bien pour mon utilisation, car je définis le chemin de fichier de sortie immédiatement lors de l'exécution. Si vous postez comme une réponse, je vais le marquer comme correct. – whitebloodcell

Répondre

0

Je pense que ce que vous cherchez est une fonction Environ: https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/environ-function

Vous pouvez configurer votre "chemin" comme ça:

MyPath = Environ("LocalAppData") 

qui renverrait:

C:\Users\username\AppData\Local 

ou

MyPath = Environ("Public") 

qui renverrait:

C:\Users\Public 

Il y a plus d'options à choisir (AppData, AllUsersProfile, etc ...)

Hope this helps!

+0

Existe-t-il un moyen d'obtenir le répertoire dans lequel le classeur est enregistré à partir de cela? Les résultats doivent idéalement être enregistrés dans OneDrive pour qu'ils soient synchronisés avec mon ordinateur de développement. – whitebloodcell

+0

@whitebloodcell Je pense qu'il me manque quelque chose. Dans votre question initiale, vous dites que le fichier Application.ActiveWorkbook.Path renvoie le chemin vers OneDrive, et dans votre question de suivi, vous dites que les résultats doivent être enregistrés dans OneDrive. – hod

+0

Désolé, par "renvoie le chemin vers OneDrive" Je veux dire qu'il renvoie l'adresse OneDrive distante, plutôt que le dossier local, il est enregistré sur mon ordinateur. Quand je me réfère à OneDrive dans "les résultats doivent idéalement être enregistrés dans OneDrive", je veux dire le dossier OneDrive local sur mon ordinateur (C: \ Users \ tomcl \ OneDrive \ Documents \ Trading). – whitebloodcell