잘못된 정방향 참조 또는 컴파일되지 않은 형식에 대한 참조
나는 현재 코드를 사용하여 여러 시트를 통과하는 루프가 있는 파일을 업데이트하고 있습니다.지금까지는 코드가 원활하게 실행되었습니다.오늘 실행 중에 "run-time error '-2147319767 (80028029)"가 발생했습니다.자동화 오류, 잘못된 전달 참조 또는 컴파일되지 않은 형식에 대한 참조입니다."
에서 발생합니다.Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues
루프의 6번째 반복에 나타납니다.
저는 용한사를 요.On Error Resume Next
실행을 완료하기 위한 임시 조치로서, 그 당시에 실행을 완료하는 것이 필수적이었습니다.
완료 후 3회(6회, 7회, 10회)가 실패했습니다.이 세 가지는 서로 상관관계(즉, 서로 다른 복사 소스, 값 등)가 없었으나 성공적으로 완료된 동일한 복사 소스/값을 가진 다른 반복이 있었습니다.
나중에 이 시트에 다른 복사 명령을 실행해도 동일한 오류가 발생했습니다.저는 결국 오류를 해결하기 위해 시트를 삭제하고 다시 만들어야 했습니다.
' Uploads file update
fpath = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("E3").Value
Workbooks.Open fpath & "Upload.xlsm"
For branchNo = 21 To 37
branchName = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("A" & branchNo).Value
branchGroup = Workbooks("TEG Rates.xlsm").Worksheets("Link List").Range("B" & branchNo).Value
' Copy/Paste Buy & Sell
Workbooks("TEG Rates.xlsm").Worksheets(branchGroup).Range("D7:G111").Copy
Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial Paste:=xlPasteValues
For no = 7 To 10
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D" & no).Value = "=ROUND(100/C" & no & ",6)"
Next no
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D14").Value = "=ROUND(100/C14,6)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D15").Value = "=ROUND(10000/C15,4)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D16").Value = "=ROUND(100/C16,6)"
Workbooks("Upload.xlsm").Worksheets(branchName).Range("D19").Value = "=ROUND(100/C19,6)"
Next branchNo
Workbooks("Upload.xlsm").Close SaveChanges:=True
Application.CutCopyMode = False
현재 이 코드를 사용할 수 있지만, 제가 없는 동안 팀에서 이 코드를 사용할 수 있을지 걱정입니다.무엇이 원인이 되었을 수 있습니까?/어떻게 하면 이런 일이 발생하지 않을 수 있습니까?필요하다면 기꺼이 파일을 제공하겠습니다.
제 친구와 저는 같은 문제를 가지고 있었습니다.(VBA 편집기 내의) Tools > References에서 "AccessabilitycplAdmin 1.0 type admin"을 활성화하여 두 컴퓨터의 문제를 해결했습니다.
저는 오늘 매크로와 같은 문제를 겪었습니다.
다음을 사용하여 시트를 선택할 때 오류가 발생했습니다.Sheets(sheet_name_var).Select
.
은 다음과 같습니다.
합니다.
시트인 원본시를삭제다를 합니다.
복사본의 이름을 원래 이름으로 변경합니다.
이게 도움이 되길 바랍니다.
잠재적으로 관련된 문제로 인해 동일한 오류가 발생했으며 워크북 내의 시트를 한 번에 참조하는 것보다 워크시트 개체를 만드는 것이 도움이 되었습니다.그래서, 대신에:
Workbooks("Upload.xlsm").Worksheets(branchName).Range("C7").PasteSpecial
대신 다음을 시도할 수 있습니다.
Dim xlWB as Excel.Workbook
Dim xlWS as Excel.Worksheet
Dim xlRange as Excel.Range
Set xlWB = Workbooks("Upload.xlsm")
Set xlWS = xlWB.Worksheets(branchname)
Set xlRange = xlWS.Range("C7")
xlRange.PasteSpecial Paste:=xlPasteValues
때로는 같은 일을 하고 있더라도 단계를 깨는 것이 도움이 됩니다.
제가 해결할 수 있는 유일한 방법은:
- 손상된 시트의 모든 쿼리 결과에 대한 "Load To" 속성을 "Only Create Connection"으로 변경합니다.
- 시트의 복사본 만들기
- 손상된 시트 삭제
- 방금 만든 시트의 이름을 손상된 시트의 이름으로 변경합니다.
- 모든 쿼리 결과를 동일한 원래 위치에 있는 새 시트로 변경
이것이 도움이 되길 바랍니다.
저는 매우 유사한 문제가 있었습니다. 저는 비슷한 엑셀 파일을 여러 개 가지고 있고 모두 같은 코드를 가지고 있습니다.코드가 하나를 제외한 모든 예외에서 실행되었으며 동일한 오류가 발생했습니다.
"run-time error '-2147319767 (80028029)' Automation error, Invalid forward reference, or reference to uncompiled type."
손상된 엑셀을 .xlsm이 아닌 .xlsx로 저장하고, 모든 엑셀 애플리케이션을 닫고, .xlsx를 다시 열고, 코드를 추가하고, .xlsm으로 저장함으로써 문제를 해결할 수 있었습니다.이제 효과가 있습니다...
저에게도 똑같은 일이 일어났습니다.하지만 대시보드가 이미 운영 중이었기 때문에 조금 더 심각한 결과를 초래했습니다.불과 5분 전에 부드럽게 실행되는 것은 코드로서 정말 충격적이었습니다.
여기 제가 한 변화들이 있습니다.
- 조건부 서식
- 피벗 테이블 업데이트 - 주요 형식 업데이트
피벗 테이블에 대한 조건부 서식의 이상한 조합이 이 문제를 야기했을 수 있다고 생각합니다.
이 손상된 워크북/시트와 관련된 한 가지 이상한 증상은 버튼에 매크로를 할당하는 동안 대화 상자에서 매크로를 볼 수 없다는 것입니다.대화 상자가 비어 있습니다. 모듈/폼/워크시트의 매크로를 나열하지 않았습니다.
시도됨 -
- 피벗 테이블 제거
- 포맷 재설정 중
- 조건부 서식 제거
- Excel을 다시 시작하는 중
- 시스템 다시 시작 중
위의 것들 중 아무 것도 작동하지 않았습니다!
호라시오가 제안한 다음 해결책은 손상된 시트를 복제하여 삭제하는 것입니다.이를 통해 문제가 즉시 해결되었습니다.
유사한 문제 - 동일한 오류.시트는 쿼리 "로드 대상" 테이블의 결과입니다.https://stackoverflow.com/users/13737858/horacio-cano 의 아이디어를 따랐습니다.테이블에서 연결로만 "로드 대상" 변경, 시트 삭제, "로드 대상"을 새 테이블로 변경, 쿼리 새로 고침.매크로가 오류 없이 실행됩니다.
도구>참조에서 Microsoft Scripting Runtime에 대한 참조를 제거하고 "확인"을 선택한 다음 다시 추가하여 해결했습니다.
(OP가 올린 것과 정확히 같은 상황은 아니지만, 동일한 오류 메시지:)
사용자 양식에서 ActiveX 요소를 삭제하는 동안 동일한 오류 메시지가 표시되었습니다.
알고 보니 Excel 앱(Visual Basic Editor를 편집하려고 했기 때문에 배경에 있던)에서 (다른) 사용자 양식이 모달 창으로 열려 있었습니다.
사용자 양식을 닫기만 하면 문제가 해결되었습니다.
사실 대답은 아니지만, 그 문제에 대한 나의 2센트 (댓글은 그것에 맞지 않았습니다 :)
기본 오류가 .NET에서 발생한다는 것을 발견했습니다.
Exception Source: mscorlib
Exception Type: System.Runtime.InteropServices.COMException
Exception Message: Invalid forward reference, or reference to uncompiled type. (Exception from HRESULT: 0x80028029 (TYPE_E_INVALIDSTATE))
Exception Target Site: InvokeDispMethod
이 페이지는 다음과 같습니다.
System.Runtime.InteropServices.COMException : A reference to the component 'MyProjectReference' already exists in the project.
at VSLangProj.References.AddProject(Project pProject)
이 오류는 내부적으로 사용되는 일부 캐시된 파일 및 언어 자료와 연결되어 있는 것으로 보입니다.
MSCorLib.dll은 공식적으로 다국어 표준 공통 객체 런타임 라이브러리의 약자가 되었습니다.
OP가 언급한 것과 동일한 오류가 있는 손상된 파일을 받기 직전에 설정에서 UI 언어를 변경하는 동안 Excel에서 파일을 조작하고 있었다는 것을 최종적으로 추가한다면, 오류가 분명히 뭔가 관련이 있다고 생각합니다!...
언급URL : https://stackoverflow.com/questions/56272229/invalid-forward-reference-or-reference-to-uncompiled-type
'programing' 카테고리의 다른 글
VBA 웹 서버에서 UTF-8 CSV 파일 가져오기 (0) | 2023.07.11 |
---|---|
Firebase Firestore의 수집 스냅샷 항목 매핑 (0) | 2023.07.11 |
부하가 있는 동안 기본값으로 열을 추가하는 가장 좋은 방법 (0) | 2023.07.11 |
PL/SQL 저장 프로시저의 AST(추상 구문 트리)에 액세스하려면 어떻게 해야 합니까? (0) | 2023.07.11 |
스프링 부트 실행 파일 병을 추출할 수 없는 이유는 무엇입니까? (0) | 2023.07.11 |