IT

컴파일러 오류:사용자 정의 유형이 정의되지 않았습니다.

itgroup 2023. 4. 13. 20:46
반응형

컴파일러 오류:사용자 정의 유형이 정의되지 않았습니다.

다음 행에서 컴파일 시 오류 "User-defined types not defined"가 표시됩니다.

Dim cn As ADODB.Connection

뭐가 잘못됐나요?

코드:

Sub test()

    Dim cn As ADODB.Connection

    'Not the best way to get the name, just convenient for notes

    strFile = Workbooks(1).FullName
    strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
    Set cn = CreateObject("ADODB.Connection")
    'For this to work, you must create a DSN and use the name in place of

    'DSNName

    'strSQL = "INSERT INTO [ODBC;DSN=DSNName;].NameOfMySQLTable " & "Select AnyField As NameOfMySQLField FROM [Sheet1$];"
     strSQL = "SELECT F1 FROM [Sheet1$];"
     cn.Execute strSQL
End Sub

Microsoft ActiveX Data Objects 2.5 Library에 대한 참조를 추가하지 않았습니다.이 참조는 다음 경우에 필요합니다.early binding.

이 레퍼런스에 접속하는 방법:

[ Tools ] > [ References ]> [ Microsoft ActiveX Data Objects 2.5 Library ]체크박스를 켜겠습니다

동작하는 다른 라이브러리는 다음과 같습니다.

Microsoft ActiveX Data Objects 2.6 라이브러리

Microsoft ActiveX Data Objects 2.7 라이브러리

Microsoft ActiveX Data Objects 2.8 라이브러리

Microsoft ActiveX Data Objects 6.1 라이브러리

레이트 바인딩을 사용할 수 있습니다.

Dim cn As Object

문제가 해결됩니다.VBA는 다음 경우에 자동으로 참조를 만듭니다.Set cn = CreateObject("ADODB.Connection")스테이트먼트가 실행됩니다.

Microsoft ActiveX Data Objects 2.5 및 2.8 라이브러리를 추가하려고 했지만 잘 되지 않았습니다.하지만 아래와 같은 새로운 오브젝트를 만들어 보니 효과가 있었습니다.

Set cn = CreateObject("ADODB.Connection")

언급URL : https://stackoverflow.com/questions/5349580/compiler-error-user-defined-types-not-defined

반응형