엑셀 셀에서 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 기능으로 바꾸는 방법 아는 사람?
따라야 할 단계:
Visual Basic Editor를 엽니다.Excel에서 Windows의 경우 +를 F11누르고 Mac의 경우 +OptionF11를 누릅니다.
새 모듈을 삽입합니다.메뉴에서:삽입 -> 모듈(이를 놓치지 마십시오!)
작성
Public
기능.예:Public Function findArea(ByVal width as Double, _ ByVal height as Double) As Double ' Return the area findArea = width * height End Function
그런 다음 다른 기능과 마찬가지로 모든 셀에서 사용합니다.
=findArea(B12,C12)
.
당신이 직면한 문제는UDF
는 Excel 환경을 수정할 수 없으며 호출 셀에만 값을 반환할 수 있습니다.
몇 가지 대안이 있습니다.
주어진 샘플에 대해서는 실제로 VBA가 필요하지 않습니다.이 공식은 효과가 있을 것입니다.
='C:\Users\UserName\Desktop\[TestSample.xlsx]Sheet1'!$B$2
다소 번거로운 작업을 수행합니다.이 답변 보기
사용할 수 있습니다.
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
'programing' 카테고리의 다른 글
dmp 파일 및 로그 파일에서 Oracle 데이터베이스를 가져오는 방법은 무엇입니까? (0) | 2023.05.22 |
---|---|
새 사용자를 생성하기 위한 SQL Server 스크립트 (0) | 2023.05.22 |
정적 파일(express.js 포함) (0) | 2023.05.17 |
MobileDevice.pkg을 신뢰할 수 없으므로 OS X 업데이트 후 Xcode를 열 수 없습니다. (0) | 2023.05.17 |
Windows용 Git Credential Manager를 비활성화하려면 어떻게 해야 합니까? (0) | 2023.05.17 |