해결 M365윈도우11
사용자 정의 함수를 다른 컴퓨터에서 사용
요즘 사용자 함수 만드는 재미를 붙였어요.
물론 코딩은 전혀 못해서, 챗GPT한테 만들어달라하고 있지만요.
암튼 그렇게 해서 만든 사용자 함수를 엑셀 추가기능 파일 (xlam)에 하나 하나 쌓아가고 있어요.
이렇게 만든 xlam파일을 다른 컴퓨터의 AddIns폴더에 저장해서 쓰고 있어요.
그런데 한쪽 컴퓨터에서 test라는 이름의 사용자 정의 함수를 사용한 수식을 작업하다가, 다른 컴퓨터에서 열었는데,
같은 값이 나오지 않고, test함수명앞에 처음 작업한 xlam파일 경로가 적혀서 오류가 나네요...
=@'C:\Users\Tigers\AppData\Roaming\Microsoft\AddIns\new.xlam'!test(A1:D5) 이렇게요.
양쪽컴에서 다 test함수를 입력하면 잘 작동해요. 그런데 왜 한쪽에서 작업하던 파일을 다른 쪽에서 열면 이렇게 오류가 날까요?
앞에 붙은 절대경로가 안붙게 할 수는 없을까요?
물론 코딩은 전혀 못해서, 챗GPT한테 만들어달라하고 있지만요.
암튼 그렇게 해서 만든 사용자 함수를 엑셀 추가기능 파일 (xlam)에 하나 하나 쌓아가고 있어요.
이렇게 만든 xlam파일을 다른 컴퓨터의 AddIns폴더에 저장해서 쓰고 있어요.
그런데 한쪽 컴퓨터에서 test라는 이름의 사용자 정의 함수를 사용한 수식을 작업하다가, 다른 컴퓨터에서 열었는데,
같은 값이 나오지 않고, test함수명앞에 처음 작업한 xlam파일 경로가 적혀서 오류가 나네요...
=@'C:\Users\Tigers\AppData\Roaming\Microsoft\AddIns\new.xlam'!test(A1:D5) 이렇게요.
양쪽컴에서 다 test함수를 입력하면 잘 작동해요. 그런데 왜 한쪽에서 작업하던 파일을 다른 쪽에서 열면 이렇게 오류가 날까요?
앞에 붙은 절대경로가 안붙게 할 수는 없을까요?
함
3
댓글 3
전사적으로 M365를 사용하고 계시다면 lambda 함수를 도입해보십시오.
엔터프라이즈 버전이실 경우, 쉐어포인트를 같이 활용하면 팀 프로세스가 획기적으로 효율화될겁니다.
Sub FixUDFPath() Dim WB As Workbook, sh As Worksheet, ad As AddIn Dim ExLinks As Variant, newName As String, openName As String, vEvents As Variant Dim i As Long For Each ad In Application.AddIns If InStr(1, ad.FullName, "MyAddIn", vbTextCompare) > 0 Then If ad.Installed Then newName = ad.FullName Exit For End If End If Next If newName = vbNullString Then newName = ThisWorkbook.FullName On Error Resume Next ExLinks = ActiveWorkbook.LinkSources(xlExcelLinks) On Error GoTo 0 If Not IsEmpty(ExLinks) Then For i = LBound(ExLinks) To UBound(ExLinks) If InStr(1, ExLinks(i), "MyAddIn", vbTextCompare) Then If ExLinks(i) <> newName Then vEvents = Application.EnableEvents Application.EnableEvents = False Application.ScreenUpdating = False openName = ActiveWorkbook.FullName ActiveWorkbook.Close False Workbooks.Open FileName:=openName, UpdateLinks:=False For Each sh In ActiveWorkbook.Sheets sh.Cells.Replace What:="'" & ExLinks(i) & "'!", Replacement:="", _ LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False Next Application.EnableEvents = vEvents Application.ScreenUpdating = True End If End If Next End If End Sub제가 만든 tigers.xlam파일의 "현재_통합_문서"에 위 코드를 넣으면 되는건가요??
찾다보니 매크로 이름을 Private Sub Workbook_Open()로 바꿔야 한다기에 바꿨어요.
그리고 코드에 두번 등장하는 "MyAddIn" 이름을 제 "tigers"로 변경했어요.
그리고 나서 주소경로가 생긴다는 파일을 열었는데... 아무런 반응이 없어요..
혹시나 하고 따로 모듈에 넣고 그냥 매크로 실행을 했는데도 아무런 반응이 없어요..
제가 뭘 놓치고 있는 걸까요?