Skip Bisconer
Who Me?
- Local time
- Today, 15:07
- Joined
- Jan 22, 2008
- Messages
- 285
I have a queries built on a linked Excel file. The Excel file has a vlookup field that is forced to "" if there is an error. In the linked files, in Access, these numbers show up as #NUM and I believe are creating me grief when trying to export the queries back to Excel. I get an error 3349: "You cannot record your changes because a value you entered violates the settings difined for this table or list. Correct the errror and try again."
Has anyone ran into this and is there a workaround for it? Possibly I could build criteria into the queries GLCode field but I don't know what to use for this.
Any help would be appreciated. The following is my export code for the above mentioned queries in case I have created the problem in the code.
I have commented out the error routine so I could determine which line of code is dying and it is the .Range("B" & i + 1).Value = rs.Fields("GLCode").Value where the halt is highlighted. That is the field in the query that has the #NUM error.
Has anyone ran into this and is there a workaround for it? Possibly I could build criteria into the queries GLCode field but I don't know what to use for this.
Any help would be appreciated. The following is my export code for the above mentioned queries in case I have created the problem in the code.
I have commented out the error routine so I could determine which line of code is dying and it is the .Range("B" & i + 1).Value = rs.Fields("GLCode").Value where the halt is highlighted. That is the field in the query that has the #NUM error.
Code:
Function ExportToExcel()
' Direct procedure flow.
'On Error GoTo Error
Dim objXL As Object
Dim xlWB As Object
Dim xlWS As Object
Set objXL = CreateObject("Excel.Application")
objXL.Visible = True
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesBisconer.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Dim db As Database
Dim rs As Recordset
Dim i As Integer
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11152", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesYoung.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11012", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesMurphy.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11020", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesHyler.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11038", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesDonati.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11046", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesWatkins.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11079", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("Cardo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesOboyle.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11095", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesJohnson.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11103", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesBourgeois.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges11111", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesKowaleski.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges12002", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesBriare.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges12085", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
.Range("J" & i + 1).Value = rs.Fields("Customer").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
Set xlWB = objXL.Workbooks.Open("C:\Amex\CurrentChargesLund.xls")
Set xlWS = xlWB.Worksheets("CurrentCharges")
Set db = CurrentDb
Set rs = db.OpenRecordset("CurrentCharges13067", , dbOpenDynamic)
rs.MoveFirst
i = 1
Do Until rs.EOF
With xlWS
' assign records to specific cells
.Range("A" & i + 1).Value = rs.Fields("GLExpense").Value
.Range("B" & i + 1).Value = rs.Fields("GLCode").Value
.Range("C" & i + 1).Value = rs.Fields("LOC").Value
.Range("D" & i + 1).Value = rs.Fields("Customer").Value
.Range("E" & i + 1).Value = rs.Fields("LastName").Value
.Range("F" & i + 1).Value = rs.Fields("FirstName").Value
.Range("G" & i + 1).Value = rs.Fields("CardNo").Value
.Range("H" & i + 1).Value = rs.Fields("Date").Value
.Range("I" & i + 1).Value = rs.Fields("BusinessType").Value
.Range("J" & i + 1).Value = rs.Fields("Commodity").Value
.Range("K" & i + 1).Value = rs.Fields("SupplierName").Value
.Range("L" & i + 1).Value = rs.Fields("Amount").Value
.Range("M" & i + 1).Value = rs.Fields("Department").Value
.Range("J" & i + 1).Value = rs.Fields("Customer").Value
End With
i = i + 1
rs.MoveNext
Loop
rs.Close
db.Close
'Exit Function
'ErrorHandler:
' Display error information.
'MsgBox "Error number " & Err.Number & ": " & Err.Description
' Resume with statement following occurrence of error.
'Resume Next
End Function