With objExlSht
For i = 2 To lastRow
Do Until rs.EOF
'get the cell value
varValue = .Range(rs![excel_column] & i).Value
'if not Null then convert it
If Not IsNull(varValue) Then
'convert it to correct datatype
If Not IsNull(rs![Expression]) Then
expr = rs![Expression]
expr = Replace$(expr, "p1", varValue)
varValue = Eval(expr)
.Range(rs![excel_column] & i).Value = varValue
End If
End If
rs.MoveNext
Loop
rs.MoveFirst
Next
End With