source

VBA의 다른 특정 워크북에서 기능을 호출하는 방법은 무엇입니까?

manycodes 2023. 5. 11. 21:35
반응형

VBA의 다른 특정 워크북에서 기능을 호출하는 방법은 무엇입니까?

애플리케이션을 사용하지 않고도 특정 워크시트에 대해 가능하기 때문에 다른 지정 워크북의 모듈에서 VBA 함수나 메서드를 호출할 수 있는 방법이 있는지 알고 싶습니다.달려.

워크시트에 대해 예를 들어 설명할 수 있습니다.

ActiveSheet.MyTest() 

MyTest가 시트 모듈에 정의되어 있는 경우

그러나 모듈에 정의된 함수를 호출하고 싶습니다.

노력했습니다.

ActiveWorkbook.MyTestModule()
ActiveWorkbook.VBProject.VBComponents("MyModule").MyTestModule(myArg)

오류를 생성할 수 없습니다. 개체가 이 메서드를 지원하지 않습니다.

전화할 수 있어요

Application.Run(ActiveWorkbook.name & "!MyTestModule", myArg)

하지만 저는 애플리케이션의 오류 처리에 대해 확신할 수 없습니다.실행하면 방법을 직접 실행할 클리너를 찾을 수 있습니다.

호출할 워크북(A라고 부릅니다)에서 호출할 워크북(B라고 부릅니다)에 다음과 같이 참조를 추가할 수 있습니다.

  1. 워크북 A에서 Microsoft Visual Basic for Applications 창을 엽니다(예: +F11를 눌러).
  2. 도구, 참조를 선택합니다.
  3. 나타나는 참조 대화상자에서 찾아보기를 선택합니다.
  4. [참조 추가] 대화상자가 나타나면 [파일 형식] 상자에서 [Microsoft Excel 파일]을 선택하고 호출할 파일(B)을 선택한 후 [열기]를 선택합니다.
  5. OK(확인)를 선택하여 References(참조) 대화상자를 닫습니다.

그러면 A 파일에서 B 파일의 공용 모듈 수준 함수를 A 파일에 있는 것처럼 호출할 수 있습니다.이름 충돌을 해결하려면 Microsoft Visual Basic for Applications Tools 메뉴의 Properties 명령을 통해 액세스할 수 있는 Properties(프로젝트 속성) 대화 상자의 General(일반) 탭에 지정된 대로 파일 B에 대한 "프로젝트 이름"으로 호출 앞에 접두사를 붙일 수 있습니다.예를 들어, 파일 B의 "프로젝트 이름"이 "VB프로젝트 B"인 경우 VB프로젝트 B 구문을 사용하여 파일 A에서 함수 F를 호출할 수 있습니다.f.

참고로 다른 워크북의 사용자 지정 데이터 유형에 액세스하려는 경우에도 이 기능이 작동합니다.

' In workbook ABC, project name Library

Public Type Book_Data
   Title As String
   Pub_Date As Date
   Pub_City As String
End Type

' In workbook DEF (after a ref to Library)
Dim Book_Info As Library.Book_Data

Book_Info.Title = "War and Peace"
Debug.Print Book_Info.Title

다른 답변에서 언급한 것처럼 DLL 형식 링크의 성가신 동작을 하지 않고 다른 워크북의 모듈에서 메서드를 호출하려면 다음과 같은 코드를 사용할 수 있습니다.

Dim otherWorkBook As Workbook
Set otherWorkBook = Workbooks.Open("myWorkbook.xlsm")

Call otherWorkBook.Sheets("SomeSheet").someMethod(arg1, arg2...)

여기서 someMethod()는 다른 시트의 모듈 내에서 관심 있는 실제 메서드를 호출하는 메서드입니다.

언급URL : https://stackoverflow.com/questions/10012463/how-to-call-function-from-another-specific-workbook-in-vba

반응형