2016-07-04 1 views
0

J'essaie d'avoir mon fichier Excel lorsque quelqu'un le ferme. Il y aura une sauvegarde pour que je puisse avoir un journal du nom d'utilisateur, de la date et de l'heure, mais je ne peux pas trouver la dernière pièce à ce puzzle. J'ai le code suivant mais échoue. comment ne pas savoir pourquoi. Sauvegarde automatique VBA en tant que macro avec nom d'utilisateur et horodatage

Private Sub ActiveWorkbook_Close() 
 
Application.DisplayAlerts = False 
 

 
Year_Run = Year(Date) 
 
If Len(Month(Date)) = 1 Then Month_Run = "0" & Month(Date) Else Month_Run = Month(Date) 
 
If Len(Day(Date)) = 1 Then Day_Run = "0" & Day(Date) Else Day_Run = Day(Date) 
 
Date_Run = " on " & Year_Run & "-" & Month_Run & "-" & Day_Run 
 

 
If Len(Hour(Time)) = 1 Then Hour_Run = "0" & Hour(Time) Else Hour_Run = Hour(Time) 
 
If Len(Minute(Time)) = 1 Then Min_Run = "0" & Minute(Time) Else Min_Run = Minute(Time) 
 
If Len(Second(Time)) = 1 Then Sec_Run = "0" & Second(Time) Else Sec_Run = Second(Time) 
 
Time_Run = " at " & Hour_Run & "," & Min_Run & "," & Sec_Run 
 

 
ActiveWorkbook.SaveAs ("\\Path to my folder on our network - " & (Environ$("Username")) & Date_Run & Time_Run & ".xlsm ") 
 
End Sub

`

+0

comment cela échoue-t-il? Erreur, fait autre chose que prévu, se bloque? Essayez 'Format (Date," aaaa-mm-jj ")' et 'Format (Heure," hh, mm, ss ")'. cela ne résoudra probablement pas le problème mais est beaucoup plus court. – arcadeprecinct

+0

Alchimie décomposée, votre code fonctionne très bien pour moi. Je peux penser à un certain nombre de raisons pour lesquelles cela ne fonctionnerait peut-être pas pour vous, mais le point soulevé par @arcadeprecinct est bien pris. Il est vraiment difficile de donner des conseils sans savoir exactement ce qui se passe de votre côté lorsque vous exécutez le code (même si ce qui se passe n'est rien). Si vous décrivez ce que vous voyez, je suis assez confiant que moi-même ou arcadeprecinct sera en mesure de vous aider le reste du chemin. –

+0

Je ne suis tout simplement pas en sécurité, donc je ne sais pas pourquoi il ne va pas économiser. J'ai modifié mon code pour le mot donc j'ai toutes sortes de recherches sur Excel et trouver des moyens pour que cela fonctionne. Donc, cela économise bien où vous le voulez aussi? –

Répondre

0

cariées Alchemy, deux choses: D'abord, je suppose que votre code est sous Module1, ou un endroit autre que le point A ci-dessous. Si tel est le cas, commencez par modifier la portée de votre sous-programme de privé à public, c'est-à-dire Public Sub ActiveWorkbook_Close() , puis ouvrez le code de ThisWorkbook (élément A ci-dessous). Assurez-vous que les éléments B et C sont définis comme ils devraient l'être. Appelez maintenant votre sous-programme comme indiqué sur l'image ci-dessous.

enter image description here

Si le problème que vous rencontrez est ce que je pense qu'il est, cela devrait faire l'affaire. Si ce n'est pas le cas, faites le moi savoir.

+0

Que voulez-vous dire par article A, B et ainsi de suite? Je n'ai vraiment utilisé le code VBA dans les modules, mais je vais essayer de suivre ce que vous avez dit et voir si je reçois une forme de résultats. –

+0

Ok, cela a fait le travail, mais puis-je vous demander pourquoi c'était tellement plus de travail que Word a été utilisé sur le même code et cela a fonctionné de façon facile. Donc, ma question principale est pourquoi devais-je faire l'avant près? –

+0

Alchimie décomposée, Avant de passer à votre prochaine question, si ma première réponse résout le problème pour vous, vous devriez considérer [l'accepter] (http://meta.stackexchange.com/q/5234/179419) en cliquant sur le chèque -marque. Ceci indique à la communauté plus large que vous avez trouvé une solution et donne une certaine réputation à la fois le répondeur et vous-même. Il n'y a aucune obligation de le faire. –