MailMerge, кажется, открыть файл Excel дважды? - PullRequest
0 голосов
/ 17 сентября 2009
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?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2009

Рабочие книги можно закрыть с помощью этого кода VBA

Workbooks("BOOK1.XLS").Close

Вы можете добавить это в конец, чтобы не отображались запросы на сохранение, если файл был обновлен и не сохранен.

 SaveChanges:=False

Excel может быть закрыт через VBA, если вызывается из Excel.

Application.Quit

При вызове из-за пределов Excel вам нужно будет установить ссылку на Excel, а затем закрыть ее.

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

Необходимо убедиться, что все рабочие книги закрыты или сохранены, в противном случае Excel предложит пользователю сохранить

0 голосов
/ 17 сентября 2009

От 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.

...