Ну раз такое щасте привалило, модифицируй:
'=========================
'field_DMS2DD.cal
'Author: Ianko Tchoukanski
'
http://www.ian-ko.com
'=========================
Dim sField
Dim sDMS As String, sS As String, sSuf As String
Dim sList
Dim i As Integer, j As Integer
Dim iDec As Integer, iNum As Integer
Dim dD As Double, dM As Double, dS As Double, dDD As Double
Dim bReplace As Boolean
'=============================
'Change the source field name below
sField = [Long]
'=============================
sDMS = sField
If Len(Trim(sDMS)) = 0 Then
dDD = 0
Else
iDec = 0
iNum = 0
For i = 1 To Len(sDMS)
sS = Mid(sDMS, i, 1)
If Not IsNumeric(sS) Then
If sS = "." Then
If Not iDec = 0 Then
bReplace = True
Else
bReplace = False
End If
iDec = iDec + 1
ElseIf UCase(sS) = "S" Or UCase(sS) = "N" Or UCase(sS) = "W" Or UCase(sS) = "E" Then
sSuf = UCase(sS)
bReplace = True
Else
bReplace = True
End If
If bReplace Then
If iNum > 0 Then
Mid(sDMS, i, 1) = ","
Else
Mid(sDMS, i, 1) = " "
End If
End If
Else
iNum = iNum + 1
End If
Next i
sList = Split(sDMS, ",")
Dim iLen As Integer
If UBound(sList) = 0 Then
sDMS = sList(0)
iLen = Len(sDMS)
If iLen >= 4 Then
dS = CDbl(Mid(sDMS, iLen - 1, 2))
dM = CDbl(Mid(sDMS, iLen - 3, 2))
sDMS = Left(sDMS, (iLen - 4))
If (Len(sDMS) > 2) Then
dD = CDbl(Right(sDMS, 3))
ElseIf (Len(sDMS) = 0) Then
dD = 0#
Else
dD = CDbl(sDMS)
End If
Else
dDD = 0
End If
dDD = dD + dM / 60# + dS / 3600#
Else
j = 0
dD = 0#
dM = 0#
dS = 0#
For i = 0 To UBound(sList)
If IsNumeric(sList(i)) Then
If j = 0 Then
dD = CDbl(sList(i))
j = j + 1
ElseIf j = 1 Then
dM = CDbl(sList(i))
j = j + 1
ElseIf j = 2 Then
dS = CDbl(sList(i))
j = j + 1
End If
End If
Next i
dDD = dD + dM / 60# + dS / 3600#
End If
If dDD < -180# Or dDD > 180# Then
dDD = 0#
End If
If sSuf = "S" Or sSuf = "W" Then
dDD = dDD * -1#
End If
End If