Excel 2010. 일부 필터를 기반으로 매크로를 실행하는 일부 통합 문서에서 일부 셀을 작성/업데이트하려고합니다. 단순함을 위해, 나는 당신이 볼 수있는 것에 질의를 줄였습니다. 이 코드는 작동하지만 통합 문서가 닫히는 경우에만 작동합니다 (다른 통합 문서에서 테스트 됨).통합 문서가있는 ADODB로 Excel 업데이트 열기
Dim libro As Workbook
Set libro = ActiveWorkbook
esteLibro = libro.Name
Dim cnCaja As ADODB.Connection
Dim rsCaja As ADODB.Recordset
Set cnCaja = New ADODB.Connection
Set rsCaja = New ADODB.Recordset
cnCaja.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source='" & esteLibro & "';" & _
"Extended Properties='Excel 12.0;HDR=Yes;ReadOnly=False';"
Dim consCaja As String
consCaja = "Update [Base$A3:T100000] Set INVERSIONES = 1000 "
rsCaja.Open consCaja, cnCaja, adOpenStatic, adLockOptimistic
다른 통합 문서에서 실행하면 "INVERSIONES"열의 빈 셀이 10000으로 변경됩니다. 같은 테이블에 대한 쿼리는 통합 문서 경우에도 작동합니다,
Debug.Print cnCaja.ConnectionString
Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin; Data Source=Danny_Diario.xlsm;Mode=Share Deny None; Jet OLEDB:System database="";Jet OLEDB:Registry Path=""; Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35; Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2; Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password=""; Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False; Jet OLEDB:Don't Copy Locale on Compact=False; Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False; Jet OLEDB:Support Complex Data=False; Jet OLEDB:Bypass UserInfo Validation=False;
그리고 :
'-2147217865 (8004e37)' The Microsoft Access database engine could not find the object '[Base$A3:T100000]'. Make sure the object exists and that you spell its name and the path name correctly. If '' is not a local object, check your network connection or contact the server administrator.
이 전체 연결 문자열은 다음과 같습니다하지만 같은 통합 문서에서 나는 오류가 발생했습니다 열다.
consCaja = "Select * from [Base$A3:T100000] Where Fecha = #" & fechaBase & "# and Empresa = ""Empresa"" and Banco = ""Banco"""
rsCaja.Open consCaja, cnCaja, adOpenForwardOnly, adLockReadOnly
Do While Not rsCaja.EOF
MsgBox (rsCaja("Empresa").Value & vbNewLine & rsCaja("Banco").Value & vbNewLine & rsCaja("INVERSIONES").Value)
rsCaja.MoveNext
Loop
마지막으로 통합 문서를 열어 ADODB로 Excel을 업데이트 할 수 있습니까? 예인 경우 무엇이 잘못 되었습니까, 아니면 어떻게 해결합니까?
연결 문자열의 전체 경로가 필요합니다. 상단 행을'esteLibro = libro.FullName'으로 변경하십시오. 그래도 열어 본 통합 문서로 업데이트 할 수 있을지 의심 스럽습니다. – Parfait
읽을 수 있으므로 전체 경로가 필요하지 않습니다. 하지만 전체 경로를 사용하더라도 여전히 동일한 오류가 발생합니다. 그리고 나는 이것을 할 수 없다는 소식을 발견 할 수 없었습니다. – Jedicillo