2017-08-30 1 views
0

J'ai écrit le code VBA pour Microsoft Word pour envoyer un courriel quand un bouton est cliqué. Lorsque le bouton est cliqué, et la macro est terminée, je voudrais que le fichier soit supprimé du bureau.Fonction VBA Kill ne pas supprimer le fichier

Lorsque j'exécute maintenant cette macro, Microsoft Word se ferme, mais le fichier n'est pas supprimé de mon bureau.

Voici mon code:

Private Sub CommandButton1_Click() 
Dim OL    As Object 
Dim EmailItem  As Object 
Dim Doc    As Document 
Dim FileName  As String 
Dim FilePath  As String 
Dim DeletePath  As String 

Application.ScreenUpdating = False 
Set OL = CreateObject("Outlook.Application") 
Set EmailItem = OL.CreateItem(olMailItem) 
Set Doc = ActiveDocument 
myFileName = "Form" 
FilePath = "C:\Users\" & Environ("Username") & "\desktop\" 
Doc.SaveAs2 FileName:=FilePath & myFileName & ".docx", Fileformat:=wdFormatXMLDocument, AddToRecentFiles:=False 
With EmailItem 
    .Subject = "Bid Award Form" 
    .Body = "Please Review the attached Bid Award form" 
    .To = "[email protected]" 
    .Importance = olImportanceNormal 'Or olImprotanceHigh Or olImprotanceLow 
    .Attachments.Add Doc.FullName 
    .Send 
End With 

    'display a message using named arguments 
MsgBox _ 
prompt:="Your email has been sent. Please check your Outlook sent mail for confirmation", _ 
Buttons:=vbOKOnly, _ 
Title:="Email Confirmation" 



'Close the File 
Doc.Close 

Kill "C:\Users\" & Environ("Username") & "\desktop\form.docx" 

'Close the Application of the document we are going to delete 
Application.Quit 

Application.ScreenUpdating = True 

Set Doc = Nothing 
Set OL = Nothing 
Set EmailItem = Nothing 



End Sub 

Toute aide que vous pouvez fournir sera très utile!

+0

vous ne pouvez pas supprimer un fichier qui est ouvert dans une application – jsotola

Répondre

0

Vous regardez probablement le mauvais fichier. Kill est une fonction qui ne fait aucune erreur. essayez simplement ce qui suit:

Sub KillTheFile 
    Kill "C:\Users\" & Environ("Username") & "\desktop\form.docx" 
End Sub 

voir si ça marche. Probablement vous avez un fichier frm.docx ou similaire.

+0

Nous avons essayé ce sous lui-même, et il travaille avec le chemin prévu. C'est juste dans le contexte du reste du code que les choses se gâchent. – noldak

+0

@noldak - puis placez un arrêt avant le 'Kill' ​​et écrivez' Application.ScreenUpdating = True'. Ensuite, appuyez à nouveau sur F5. Vous pourriez avoir de la chance. Juste pour l'enregistrement - par hasard, avez-vous 'Sur Error Resume Next' quelque part dans votre code? – Vityata

+0

Je pense que vous pouvez simplement coller cela dans la fenêtre Immédiat (toute la ligne "kill ..." seulement), appuyez sur Entrée et voir si le fichier disparaît. Si non, essayez de mettre le chemin complet et voir si cela fonctionne. Cela devrait vous donner quelques indices. –

0

Essayez comme ça à la place

On Error Goto 0 
Dim sDocName as string 
sDocName = Doc.FullName 
Doc.Close 
Kill sDocName