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

왜이 코드가 "excelile"을 두 번 열어 Excel 중 하나가 읽기 전용입니까? Word에서 Excel 파일을 닫으려면 어떻게합니까? VBA에서MailMerge가 Excel 파일을 두 번 열리는 것처럼 보입니까?

답변

0

통합 문서는이 VBA 코드 당신은 끝이를 추가 할 수 있습니다

Workbooks("BOOK1.XLS").Close

으로 닫을 수 있습니다.

SaveChanges:=False 

Excel은 Excel 내에서 호출 된 경우 VBA를 통해 닫을 수 있습니다.

Application.Quit 

Excel 외부에서 호출 한 경우 Excel에 대한 참조를 설정 한 다음 닫아야합니다.

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

당신은 그렇지 않으면 Excel에서 내가 선택한 하나를 죽이고 싶어

+0

감사합니다. 그러나 workbooks.close를 실행하는 방법 또는 Excel 매크로에서 Excel을 종료하는 방법 Word는 DDE를 통해 Excel을 열고 열어 둡니다. – Tom

+0

DDE를 사용하면 병합 문서가 닫히면 Excel도 자동으로 닫힙니다. 이 작업을 수행하려면 병합 출력을 닫지 않아도됩니다. –

0

:

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 

엑셀의 모든 인스턴스를 죽일. 저장 할 메시지가 파일이 업데이트 된 경우 표시되지 및 저장되지 않도록

+0

저장하라는 메시지를 표시합니다, 모든 통합 문서가 닫히거나 저장되어 있는지 확인해야합니다, 단지 DDE가 열려 특정 XLS 파일이 그 하나를 오픈 , 그렇게하는 방법? – Tom

관련 문제