2010-11-19 2 views
1

엑셀에서 액세스 할 수있는 다음 AD 연결이 있는데 작동하지 않지만 위의 오류가 발생합니다. 어떤 아이디어?ADO 실행 - 컴파일 오류 : 사용자 정의 형식이 정의되지 않았습니다.

Sub ADO_to_access() 

Dim database As New ADODB.Connection // ERROR HERE 
Dim connectionstring As String 
Dim NewSet As Recordset 
Dim CurrentSheet As Worksheet 

Set CurrentSheet = ActiveSheet 
Set objaccess = Nothing 

connectionstring = "Provider=Microsoft.Jet.OLEDB.4.0; " & _ 
     "Data Source=C:\Users\Carlos\Desktop\VBA - CW - Database.mdb;" 

database.Open connectionstring 

' ************* MEN 
Set NewSet = New ADODB.Recordset 
NewSet.Open "Mens_Dept_Data", database, adOpenKeyset, adLockOptimistic, adCmdTable 

x = 6 
Do While Len(Range("P" & x).Formula) > 0 
With NewSet 
.AddNew 

.Fields("Irina").Value = CurrentSheet.Range("P" & x).Value 
.Fields("Thomas").Value = CurrentSheet.Range("Q" & x).Value 
.Fields("Jackie").Value = CurrentSheet.Range("R" & x).Value 

.Update 
End With 
x = x + 1 
Loop 

NewSet.Close 
database.Close 

End Sub 
+0

그런데 코드 서식에 버그가 있습니다. 그것을 피하기 위해 코멘트를 "끝내고"코멘트를 "닫기"하십시오 : -/ –

답변

6

adodb 라이브러리를 참조하셨습니까?

+0

아니요, 선택해야합니까? – Carlos

+1

DDL 및 보안을위한 Microsoft ADO ext 6.0? – Carlos

+1

Microsoft ActiveX 데이터 개체 x.x 종종 많은 개체가 있습니다. 필요한 항목을 선택하십시오. 모르는 경우 가장 최근 항목을 선택하십시오. –

0

(VBE, 선택 도구, 참고 문헌에서) 나는 문제는 그 유형에있을 수 있음을 보라 :

var adOpenForwardOnly = 0, adOpenKeyset = 1, adOpenDynamic = 2, adOpenStatic = 3; //CursorType Values 
var adLockReadOnly = 1, adLockPessimistic = 2, adLockOptimistic = 3, adLockBatchOptimistic = 4; //LockTypeEnum Values 
var adStateClosed = 0, adStateOpen = 1, adStateConnecting = 2, adStateExecuting = 4; //ObjectStateEnum Values 
var adUseServer = 2, adUseClient = 3 //CursorLocationEnum Values 
var adCmdTable = 2 //CommandTypeEnum Values 

편집 후 : 다음과 같이

adOpenKeyset, adLockOptimistic, adCmdTable 

시도 그들을 정의

죄송합니다. 이것은 JScrip 방언이지만, VBScript로 변경하실 수 있습니다. :)

+1

아마도 OP에서 "여기에 오류가 있습니다"라는 것을 알지 못했을 것입니까? – Fionnuala

+0

사실 감사합니다! – Wodzu