우선, 시간과 도움에 미리 감사드립니다. 여기 내 상황이있다.엑셀에서 값을 가져 와서 액세스 테이블의 기준으로 액세스하십시오.
기존 엑셀 통합 문서의 일부 값을 액세스 데이터베이스의 기존 테이블에 추가하려고합니다. 여기에 내가 찾은 코드가 있고, 내 요구에 따라 조금씩 연주했지만, 버튼을 클릭해도 아무런 효과가 없습니다. 오류 메시지가 없으며 가져온 값도없고 아무 것도 수행하지 않습니다.
Private Sub Command39_Click()
On Error GoTo Err_Handler
Dim wbFDU As Workbook
Dim objExcelApp As Excel.Application
Dim db As Database
Dim rstWL As Recordset
Dim columnI As String
Dim columnS As String
Dim searchInC As String
Dim C As String
Dim I As String
Dim M As String
Dim S As String
Dim W As String
Dim iCounter As Integer
Set db = CurrentDb
Set rstWL = db.OpenRecordset("Select * FROM WL WHERE WLDate = Date()-1")
Set objExcelApp = New Excel.Application
objExcelApp.Workbooks.Open ("\\CDB\Shared\MNG\CIO Mng.xlsm")
Set wbFDU = objExcelApp.Workbooks(1)
If rstWL.EOF = False Then
rstWL.MoveFirst
Do While rstWL.EOF = False
iCounter = 1
C = "C" & iCounter
I = "I" & iCounter
M = "M" & iCounter
S = "S" & iCounter
W = "W" & iCounter
Do Until wbFDU.Worksheets("Rep").Range(C).Value = ""
searchInC = wbFDU.Worksheets("Rep").Range(C).Value
If rstWL!CustName = searchInC Then
columnI = wbFDU.Worksheets("Rep").Range(I).Value + wbFDU.Worksheets("Rep").Range(M).Value
columnS = wbFDU.Worksheets("Rep").Range(S).Value + wbFDU.Worksheets("Rep").Range(W).Value
rstWL.Edit
rstWL.Fields("LCDCO") = columnI
rstWL.Update
rstWL.Fields("ECDCO") = columnS
rstWL.Update
End If
iCounter = iCounter + 1
C = "C" & iCounter
I = "I" & iCounter
M = "M" & iCounter
S = "S" & iCounter
W = "W" & iCounter
Loop
rstWL.MoveNext
Loop
End If
wbFDU.Close False
Set wbFDU = Nothing
rstWL.Close
Set rstWL = Nothing
db.Close
Set db = Nothing
Exit Sub
Err_Handler:
MsgBox "The following error has occured." & vbCrLf & vbCrLf & _
"Error Number " & Err.Number & vbCrLf & _
"Error Description" & Err.Description & vbCrLf & _
"Your application will close!", _
vbCritical, "An Error has Occured"
End Sub
며칠이 지났기 때문에 내가 잘못하고있는 것을 알 수 없습니다.
* 가져온 값 *을 요구하지 않으므로 레코드를 업데이트하거나 추가 하시겠습니까? 후자의 경우 [Recordset.AddNew] (https://msdn.microsoft.com/en-us/library/office/ff845624.aspx)를 사용하고 특정 'SELECT'대신 전체 테이블을 호출하십시오. 또한'If'block을'If rstWL.RecordCount> 0'으로 시도해보십시오. – Parfait
제 의도는 기록을 갱신하는 것입니다. 액세스 테이블에 다른 값을 가진 고객 ID가 있습니다. 동일한 고객 ID가 여러 다른 날짜에 존재할 수 있습니다. 그 이유는 Date() - 1 기준으로 레코드 세트를 호출하려고하기 때문입니다. 영향을 받음). Excel 시트에는 다른 값을 가진 일부 고객이 있으며 액세스 테이블의 필드에 업데이트로 가져 오는 데 필요한 값입니다. – taccoo73
한 번에 한 줄씩 코드를 단계별로 실행하려면 F8 키를 눌러보십시오. Range (C) .Value = ""와'If rstWL! CustName = searchInC If'는'당신의 업데이트가 실행되는 것을 막을 수 있습니다. –