2010-02-17 3 views
2

저는 "fileB.xls"를 연 다음 즉시 열리는 VBA 매크로를 Excel에서 작성하고 있습니다. 우리가 3 엑셀 파일에 대해 이야기 할 것이므로 처음 한 파일을 호출 할 것입니다.VBA "ThisWorkbook.Close"이 통합 문서를 닫지 마십시오!

파일 A에 대한 userform의 단추 코드는 다음과 같습니다.

Private Sub CommandButton2_Click() 
    'Code for Button in FileA ' 
    Workbooks.Open Filename:="File Path/fileB.xls" 
    ThisWorkbook.Close 
End Sub 

"fileB.xls"가 열리면 양식을 실행하여 일부 사용자 정보를 수집합니다.

"fileB.xls"가 열리지 만 원본 파일이 닫히지 않습니다.

Sub Workbook_Open() 
    'Code in FileB ' 
    'Display a form to obtain information from the user. ' 
    frmOpenFile.Show 
End Sub 

파일 B는 세 번째이자 마지막 Excel 파일 (FileC)을 엽니 다. FileA의 코드와 비슷한 코드는 FileB에서 사용되며 FileC를 시작할 때 잘 작동합니다 (FileB는 정상적으로 종료 됨).

아이디어는 입력해야하는 양식을 선택하는 "마스터"파일이 하나 있다는 것입니다. 그런 다음이 마스터 파일이 닫히고 사용자가 양식을 채울 수있게하고 사용자 입력에 따라 최종 Excel 파일이 열립니다.

그래서 문제를 되풀이하기 위해 FileA가 열리고 사용자 폼이 시작되고 사용자가 단추를 클릭하고 File B lauches를 클릭하면 FileA가 닫히지 않습니다.

어떤 도움을 주셔서 감사합니다.

편집 : FileA를 직접 다시 열어 FileA를 다시 작성하면 FileA가 올바르게 종료된다는 점에 유의해야합니다. FileB의 사용자 폼이 File A가 닫히지 않도록 할 수 있습니까?

답변

4

예, 그것은 정의 폼입니다. 파일 C의 userform은 비동기식입니다. 파일 B의 파일과 반대입니다. 파일 B가 열리면 사용자 정의가 열리고 모든 코드 실행은 닫힐 때까지 중지됩니다. 파일 C를 사용하면 코드 실행이 계속됩니다. 파일 B의 사용자 정의 특성 ShowModal을 False로 변경하면 동일하게 작동합니다.

VBE에서 해당 Userform을 열고 F4 키를 눌러 등록 정보 대화 상자를 엽니 다. ShowModal 속성을 찾아 False로 변경하십시오.

+1

당신, 선생님, 사람들 사이에있는 하나님 이십니다. 나는 아침에 거의 내 머리를 때려 눕혔다. – Sumason

0

어쨌든 통합 문서 FileA가 변경된 경우 사용자에게 통합 문서를 저장하라는 메시지가 표시됩니다.

실행중인 다른 코드에 따라보기에서 숨겨져있을 수 있습니다.

너무 오래 변경 사항을 저장하지 않아도,이 코드가 작동,이 메시지를 방지하려면 :

ThisWorkbook.Close SaveChanges = False 
+0

도움 주셔서 감사합니다. 불행히도 문제는 계속되지만 실제로 사용자가 할 수있는 일을 알지 못합니다. – Sumason

+0

변경 사항을 저장해야하는 경우 savechanges를 true로 변경하십시오. – guitarthrower

관련 문제