2010-12-03 21 views
0

Le code suivant fonctionne pour les fichiers DOCX, mais donne « accès refusé » sur les fichiers DOC:Impossible TUER fichier en utilisant Word 2007 VBA si elle est format DOC

Public Sub SaveGraded() 
    oldnamepath = ActiveDocument.FullName 

    oldname = GetFileName(ActiveDocument.Name) 
    oldExtension = getextension(ActiveDocument.FullName) 

    newname = oldname & "_GRADED" & "." & oldExtension 

    ActiveDocument.SaveAs filename:=newname 
    Kill oldnamepath 
End Sub 

Répondre

0

En effet, il est une de ces choses étranges avec Word, il tiendra un fichier .doc ouvert exclusivement beaucoup plus long qu'un fichier .docx.

Vous pouvez utiliser une boucle pour tester en continu la suppression jusqu'à ce qu'elle fonctionne - n'utilisez pas Kill pour cela puisque vous ne pouvez pas l'intercepter, utilisez VBScript FileSystemObject.DeleteFile (str Name, bool Force), ce qui est plus fiable de toute façon - ou vous pouvez utiliser ActiveDocument.Close et le rouvrir. Cependant, j'ai remarqué que même cela ne fonctionne pas toujours et vous devez parfois suivre cela par Application.Quit; Au revoir l'exécution du script sauf si vous l'automatisez à partir d'une application externe, ce que je fais.