2009-09-17 61 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 

爲什麼這段代碼打開「excelfile」兩次excel,其中一個是隻讀的。如何從Word關閉這些Excel文件?MailMerge似乎打開兩次Excel文件?

回答

0

工作簿可以使用此VBA代碼

Workbooks("BOOK1.XLS").Close

您可以添加到這個年底前關閉,因此,如果該文件已被更新,不顯示任何提示保存,而不是保存。

SaveChanges:=False 

如果在Excel中調用Excel,可以通過VBA關閉Excel。

Application.Quit 

如果從Excel以外調用,則需要設置對Excel的引用,然後關閉它。

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

你需要確保所有的工作簿被關閉或保存,否則Excel將提示用戶保存

+0

謝謝,但如何運行workbooks.close或excel退出Word宏? Word通過DDE打開Excel並保持打開狀態 – Tom 2009-09-22 06:41:29

+0

通過DDE,一旦合併文檔關閉,Excel也將自動關閉。合併的輸出不需要關閉發生。 – 2009-09-22 12:29:20

0

從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 

會殺了Excel的所有實例。

+0

我要殺死一個選擇了一個,只是DDE打開一個,具有特定的XLS文件打開, 怎麼做? – Tom 2009-09-22 06:42:03