programing

엑셀 셀에서 VBA 기능을 호출하는 방법은?

bestprogram 2023. 5. 22. 21:49

엑셀 셀에서 VBA 기능을 호출하는 방법은?

저는 VBA 신입생입니다. 엑셀에서 호출할 수 있는 기능을 작성하려고 합니다. 닫힌 워크북을 열고 셀 값을 찾아 반환할 수 있는 기능입니다.

지금까지 저는 다음과 같은 매크로를 작성하는 방법을 알고 있습니다.

Sub OpenWorkbook()
    Dim path As String
    path = "C:\Users\UserName\Desktop\TestSample.xlsx"

    Dim currentWb As Workbook
    Set currentWb = ThisWorkbook


    currentWb.Sheets("Sheet1").Range("A1") = OpenWorkbookToPullData(path, "B2")
End Sub


Function OpenWorkbookToPullData(path, cell)

    Dim openWb As Workbook
    Set openWb = Workbooks.Open(path, , True)

    Dim openWs As Worksheet
    Set openWs = openWb.Sheets("Sheet1")

    OpenWorkbookToPullData = openWs.Range(cell)

    openWb.Close (False)

End Function

OpenWorkbook() 매크로는 완벽하게 실행되지만 OpenWorkbookToPullData(...)를 Excel 셀에서 직접 호출하려고 하면 작동하지 않습니다.다음 문장:

    Set openWb = Workbooks.Open(path, , True)

아무것도 반환하지 않습니다.

엑셀 셀에서 호출할 수 있는 작동하는 VBA 기능으로 바꾸는 방법 아는 사람?

정답은 다음과 같습니다.

따라야 할 단계:

  1. Visual Basic Editor를 엽니다.Excel에서 Windows의 경우 +를 F11누르고 Mac의 경우 +OptionF11를 누릅니다.

  2. 새 모듈을 삽입합니다.메뉴에서:삽입 -> 모듈(이를 놓치지 마십시오!)

  3. 작성Public기능.예:

    Public Function findArea(ByVal width as Double, _
                             ByVal height as Double) As Double
        ' Return the area
        findArea = width * height
    End Function
    
  4. 그런 다음 다른 기능과 마찬가지로 모든 셀에서 사용합니다.=findArea(B12,C12).

당신이 직면한 문제는UDF는 Excel 환경을 수정할 수 없으며 호출 셀에만 값을 반환할 수 있습니다.

몇 가지 대안이 있습니다.

  1. 주어진 샘플에 대해서는 실제로 VBA가 필요하지 않습니다.이 공식은 효과가 있을 것입니다.
    ='C:\Users\UserName\Desktop\[TestSample.xlsx]Sheet1'!$B$2

  2. 다소 번거로운 작업을 수행합니다.이 답변 보기

  3. 사용할 수 있습니다.ExecuteExcel4Macro또는OLEDB

A 기능은 작동하지 않으며, 다음과 같이 필요하지도 않습니다.

Sub OpenWorkbook()
    Dim r1 As Range, r2 As Range, o As Workbook
    Set r1 = ThisWorkbook.Sheets("Sheet1").Range("A1")
    Set o = Workbooks.Open(Filename:="C:\TestFolder\ABC.xlsx")
    Set r2 = ActiveWorkbook.Sheets("Sheet1").Range("B2")
    [r1] = [r2]
    o.Close
End Sub

언급URL : https://stackoverflow.com/questions/19601630/how-to-call-vba-function-from-excel-cells