I get the compile-time error "User-defined types not defined" on this line:
Dim cn As ADODB.Connection
What could be wrong?
Code:
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
“not defined”. A possible reason for the error to occur is that you are utilizing the early binding method to declare and define the object, but the required reference has not been added.
This error has the following causes and solutions: You tried to declare a variable or argument with an undefined data type or you specified an unknown class or object. Use the Type statement in a module to define a new data type.
To correct this errorMake sure that the procedure name is spelled correctly. Find the name of the project containing the procedure you want to call in the References dialog box. If it does not appear, click the Browse button to search for it. Select the check box to the left of the project name, and then click OK.
I had forgotten to add a reference to "Microsoft ActiveX Data Objects 2.5 Library": This reference is required for early binding
.
How to get to that reference:
Tools > References > Check the checkbox in front of "Microsoft ActiveX Data Objects 2.5 Library"
Other libraries that work include:
Microsoft ActiveX Data Objects 2.6 Library
Microsoft ActiveX Data Objects 2.7 Library
Microsoft ActiveX Data Objects 2.8 Library
Microsoft ActiveX Data Objects 6.1 Library
You can use late binding:
Dim cn As Object
will make the problem go away. VBA will make the reference automatically when the Set cn = CreateObject("ADODB.Connection")
statement is executed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With