VBA Excel classeur Ouvert, effectuer des actions, enregistrer, fermer
Cette question a été modifié en raison de la longueur des commentaires et des mises à jour à partir de propositions de réponses.
Comme demandé voici le module 13;
Sub SaveInFormat()
Application.DisplayAlerts = False
Workbooks.Application.ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data\" & Format(Date, "yyyymm") & "DB" & ".xlsx", leFormat:=51
Application.DisplayAlerts = True
End Sub
Aussi il y a des problèmes avec la errorhandling, je sais que j'ai mal passé avec elle, mais je suis plus intéressé par la fixation de la fonction de fermeture au moment avant d'entrer en elle. Voici le code de gestion d'erreur qui a besoin de quelques travaux
Sub test()
Dim wk As String, yr As String, fname As String, fpath As String
Dim owb As Workbook
wk = ComboBox1.Value
yr = ComboBox2.Value
fname = yr & "W" & wk
fpath = "C:\Documents and Settings\jammil\Desktop\AutoFinance\ProjectControl\Data"
owb = Application.Workbooks.Open(fpath & "\" & fname)
On Error GoTo ErrorHandler:
ErrorHandler:
If MsgBox("This File Does Not Exist!", vbRetryCancel) = vbCancel Then Exit Sub Else Call Clear
'Do Some Stuff
Call Module13.SaveInFormat
owb.Close
c'est votre code de test en plus de ma de changer le chemin du fichier et le nom de
eh bien, je n'ai vu à ce que votre question: "Globalement, je veux une fonction d'un bouton dans mon userform pour ouvrir certains classeurs et effectuer certaines actions, enregistrer dans un format, puis de fermer ou d'ouvrir un classeur et d'afficher l'information." - ce sont tous les serperate tâches, qui sont très facilement pour obtenir des solutions de pour en excel-de l'aide ou de la net - vos questions ici vient un peu partout comme "jolie s'il vous plaît, faire mon travail" - pause jusqu'à unique code plus de questions connexes.
OriginalL'auteur JamesDev | 2012-10-18
Vous devez vous connecter pour publier un commentaire.
Après discussion, l'affichage mis à jour réponse:
Erreur De Manipulation:
Vous pouvez essayer quelque chose comme cela pour attraper une erreur spécifique:
owb.close
si elle n'est plus ouverte. Ajouter une autre ligne de mentionner le nom de votre nouveau classeur si vous voulez le fermer après l'enregistrement.Oui, la même méthode peut s'appliquer, telles que:
.SaveAs mypath & "\" & yr & mnth
Si nous revenir en arrière un peu, avez-vous déclaré
oWB
comme un classeur et Réglez-le classeur est ouvert sur la base des valeurs dérivées de la comboboxes? Si je vous comprends alors effectuer d'autres actions sur ce classeur qui a été ouvert et l'Enregistrer comme un nom de fichier différent (YYYYMMDB.xlsx)? Si oui, alors vous devriez toujours être en mesure d'utiliser leoWB
variable pour fermer le classeur.malheureusement, cela a fonctionné, mais néanmoins, vous gagner le statut de héros de la semaine. Il n'est d'aucune utilité, mais vous allez être à partir de maintenant jusqu'à vendredi prochain mon héros de la semaine, ça se passe sur facebook. Je vais travailler sur un trophée ou quelque chose
Je n'ai pas regardé ton code en profondeur, mais je crois que vous voulez avoir
Exit Sub
AVANT que le gestionnaire d'erreur. Voir tout en bas de ma réponse pour la référence.OriginalL'auteur Alistair Weir
Je vais essayer de répondre à plusieurs choses différentes, mais ma contribution ne peut pas couvrir l'ensemble de vos questions. Peut-être que plusieurs d'entre nous peut prendre différents morceaux de cette. Toutefois, cette information doit être utile pour vous. Ici, nous allons..
L'Ouverture D'Un Autre Fichier:
L'Ouverture D'Un Fichier Avec La Date Spécifiée Si Elle Existe:
Je ne suis pas sûr de la façon de rechercher votre répertoire pour voir si un fichier existe, mais dans mon cas, je n'aurais pas pris la peine de le rechercher, je voudrais simplement essayer de l'ouvrir et de le mettre dans certains vérification des erreurs, de sorte que si il n'existe pas afficher ce message ou ne xyz.
Certaines communes de vérification des erreurs de déclarations:
Ou (meilleure option):
vous souhaiterez probablement utiliser la
GoTo ErrorHandler
indiqué ci-dessous pour atteindre cetBeaucoup plus d'information sur la gestion des Erreurs ici: http://www.cpearson.com/excel/errorhandling.htm
Aussi, si vous voulez en savoir plus ou avez besoin de savoir, plus généralement, en VBA, je recommanderais Siddharth de la Déroute du site, il y a beaucoup de tutoriels et d'exemples de code ici:
http://www.siddharthrout.com/vb-dot-net-and-excel/
Espérons que cette aide!
Exemple sur la manière d'assurer le code d'erreur ne fonctionne pas à Chaque fois:
si vous déboguer le code sans le
Exit Sub
AVANT que le gestionnaire d'erreur, vous réaliserez rapidement que le gestionnaire d'erreur sera exécuté à chaque fois que regarldess de si il y a une erreur ou pas. Le lien ci-dessous l'exemple de code montre une précédente réponse à cette question.Aussi, regardez cette autre question en vous avez besoin de plus de référence à la façon dont cela fonctionne:
goto bloc ne fonctionne pas VBA
sonne bien hâte de hearin de vous
J'ai utilisé votre gestion des erreurs pour en faire un message s'affiche si la tentative d'ouverture de fichier échoue. Malheureusement, lors de l'ouverture de fichier fonctionne, je reçois toujours le message
J'ai upvoted que votre errorhandling m'a fourni une plate-forme sur laquelle travailler, mais pour son sens de la profondeur de la réponse et de l'aide je suis accepter la réponse de @alistair weir
vous avez besoin de mettre de Sortie [Sub,Si (quel que soit le code est dans)] avant que l'erreur de manipulation de la section. De cette façon, le code ne sera pas naturellement exécuter le code, sauf si c'est explicitement dit de le faire à cause de l'erreur. Je vais poster un exemple dans ma réponse ci-dessus.
OriginalL'auteur Mike Kellogg