2017-10-05 5 views
3

다른 통합 문서의 ThisWorkbook 범위로 프로 시저를 가져 오려면 VBA 코드가 필요합니다.다른 통합 문서로 "ThisWorkbook"매크로 가져 오기

모듈을 다른 통합 문서로 가져 오는 코드가 있지만이 절차를 모듈 범위가 아닌 ThisWorkbook 범위로 가져 오는 방법은 무엇입니까?

Sub TransferModule() 
    Const modul As String = "Misc" 
    Const tempfile As String = "/Users/Roman/Desktop/temp.bas" 

    Dim WBK As Workbook 

    On Error Resume Next 

    Set WBK = Workbooks.Add 

    ThisWorkbook.VBProject.VBComponents(modul).Export tempfile 

    WBK.VBProject.VBComponents.Import tempfile 

    Kill tempfile 
End Sub 

이것은 temp.bas에 수출하고 다른 통합 문서로 가져올, "이"통합 문서에서 모듈 Misc 걸립니다. 그러나 모듈로 가져 오지 말고 ThisWorkbook 범위로 가져와야합니다. Private Sub Workbook_BeforeClose 이벤트입니다.

답변

3

대신에 새 통합 문서를 만드는 것보다 : 원래는이 모든 ThisWorkbook 코드가됩니다

Sub lkjhgf() 
    ThisWorkbook.SaveCopyAs ("C:\Users\Garys\Desktop\new.xlsm") 
End Sub 

새로 생성 된 통합 문서 :

Set WBK = Workbooks.Add 

가 같은 것을 사용하는 것이 좋습니다.

(물론, 당신은 당신이 복사 필요하지 않는 물건을 제거 할 수있는 더 정리가있을 수 있습니다.)

수정 # 1 : 여기

참조 Vogelaar의 답변을 :

Loading a subroutine into "ThisWorkbook" using VBA

+0

그러나 나는 개인 서브를 추가 할 필요가 기본 통합 문서에서 newWorkbook에이 newWorkbook에 SheetA을 복사 매크로가, 감사에 "ThisWorkb ook "가능하다면. 이 PrivateSub은 기본 통합 문서에 실제로 있어야 할 필요가 없습니다. –

+0

@ RomanŽydyk보기 내 ** 편집 # 1 **이 도움이 되나요 ?? –

+0

그게 전부 야! 완전한! 고마워요! –