2009-09-17 7 views
0
With ActiveDocument.MailMerge 
.MainDocumentType = wdCatalog 
.OpenDataSource Name:=excelfile, _ 
Connection:="Entire spreadsheet", SubType:=8, ReadOnly:=True 
''# Range = Selection.Range 
.Destination = wdSendToNewDocument 
.Execute 
End With ''# Activedocument 
DDETerminateAll 

Pourquoi ce code ouvert « ExcelFile » deux fois pour exceller, l'un d'entre eux est en lecture seule. Comment puis-je fermer ces fichiers Excel à partir de Word?MailMerge semble ouvrir deux fois le fichier Excel?

Répondre

0

Workbooks peut être fermé avec ce code VBA

Workbooks("BOOK1.XLS").Close

Vous pouvez ajouter à la fin, de sorte qu'aucune invite à enregistrer sont affichées si le fichier a été mis à jour et non enregistrés.

SaveChanges:=False 

Excel peut être fermé via VBA avec l'appel depuis Excel. Si vous appelez depuis l'extérieur d'Excel, vous devrez définir une référence à Excel, puis la fermer.

Set appExcel = GetObject(, "Excel.Application") 
appExcel.Quit 

Vous devez vous assurer que tous les classeurs sont fermés ou enregistrés, sinon Excel demandera à l'utilisateur d'enregistrer

+0

grâce, mais la façon d'exécuter workbooks.close ou Excel quitter de macro Word ?? Word ouvre Excel via DDE et laisse ouvrir – Tom

+0

Avec DDE, une fois le document de fusion est fermé, Excel sera automatiquement fermé ainsi. La sortie de la fusion n'a pas besoin d'être fermée pour que cela se produise. –

0

De VBA:

Dim objWMIcimv2 As Object 
Dim objProcess As Object 
Dim objList As Object 
Dim errCode As Integer 

Set objWMIcimv2 = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\.\root\cimv2") 'Connect to CIMV2 Namespace 

Set objList = objWMIcimv2.ExecQuery _ 
("select * from win32_process where name='EXCEL.EXE'") 'Find the process to terminate 

For Each objProcess In objList 

    errCode = objProcess.Terminate 'Terminates a process and all of its threads. 

Next 

tuerais toutes les instances d'Excel.

+0

Je veux tuer un élu, juste DDE a ouvert un, qui a un fichier xls spécifique ouvert , comment faire ça? – Tom