Я написал код для приложения только на прошлой неделе:
Public Sub RenameFields(ByRef tdf As DAO.TableDef)
Dim fld As DAO.Field
Dim strFieldName As String
Dim strNewName As String
Debug.Print "==============================================" & vbCrLf & UCase(tdf.Name)
For Each fld In tdf.Fields
strFieldName = fld.Name
strNewName = Mid(strFieldName, 4)
Select Case Left(strFieldName, 3)
Case "boo", "byt", "cur", "dat", "hyp", "int", "mem", "obj", "txt"
fld.Name = strNewName
Debug.Print tdf.Name & "." & strFieldName & "=>" & strNewName
End Select
Next fld
Set fld = Nothing
End Sub
В этом случае предыдущий разработчик тупо использовал соглашения об именах переменных VBA для имен полей (например, txtLastName для того, что должно быть LastName), и мне нужно было удалить их все. Код называется так:
Dim tdf As DAO.TableDef
For Each tdf in CurrentDB.TableDefs
If Left(tdf.Name,3) = "tbl" Then ' <= this line may differ for you
Call RenameFields(tdf)
End If
Next tdf
Set tdf = Nothing
Вы можете легко адаптировать подпрограмму RenameFields () для использования Replace () для нового имени, примерно так:
Public Sub RenameFields(ByRef tdf As DAO.TableDef)
Dim fld As DAO.Field
Dim strFieldName As String
Dim strNewName As String
Debug.Print "==============================================" & vbCrLf & UCase(tdf.Name)
For Each fld In tdf.Fields
strFieldName = fld.Name
strNewName = Replace(strFieldName, "_"," ")
If strFieldName <> strNewName Then
fld.Name = strNewName
Debug.Print tdf.Name & "." & strFieldName & "=>" & strNewName
End If
Next fld
Set fld = Nothing
End Sub
Все это говорит о том, что я действительно, действительно настоятельно рекомендую, чтобы вы не заменяли подчеркивания пробелами, поскольку это значительно усложняет работу с именами полей в SQL и в коде , Я бы использовал регистр CAMEL без подчеркиваний, пробелов и тире, чтобы строка Replace () в приведенном выше коде стала такой:
strNewName = Replace(StrConv(Replace(strFieldName, "_"," "), vbProper)," ", vbNullString)
Это преобразовало бы «Last_Name» или «last_name» в «LastName». Случай верблюда для удобочитаемости имен полей был стандартным для разработчиков Access, пока я программировал в Access (с 1996 года), и избегал проблем, вызванных специальными символами или пробелами (то есть необходимость заключать имя поля в квадратные скобки ).