以下のような内容のモジュールを作成して、
ReplaceField をマクロなどに登録して実行してください。
どうやってマクロに登録するの?とか
やってみたけど動かない… とかがあれば、補足をお願いします。
Public Function ReplaceField()
'TODO:置換するテーブル名、置換するフィールド名を適当に書き換えてください。
Dim FndStr As String
Dim RepStr As String
FndStr = InputBox("検索する文字列を入力して下さい")
RepStr = InputBox("置換後の文字列を入力して下さい")
Call ReplaceFieldSub("置換するテーブル名1", "置換するフィールド名", FndStr, RepStr)
Call ReplaceFieldSub("置換するテーブル名2", "置換するフィールド名", FndStr, RepStr)
Call ReplaceFieldSub("置換するテーブル名3", "置換するフィールド名", FndStr, RepStr)
Call ReplaceFieldSub("置換するテーブル名4", "置換するフィールド名", FndStr, RepStr)
Call ReplaceFieldSub("置換するテーブル名5", "置換するフィールド名", FndStr, RepStr)
End Function
Private Function ReplaceFieldSub(TableName As String, FieldName As String, FndStr As String, RepStr As String) As Long
Dim SQL As String
SQL = "UPDATE " & TableName _
& " SET " & FieldName & " = ReplaceStr([" & FieldName & "],'" & FndStr & "','" & RepStr & "');"
CurrentDb.Execute SQL
End Function
Public Function ReplaceStr(ByRef SrcString As Variant, FndStr As String, RepStr As String) As String
Dim StrPos As Long, SrcStart As Long
Dim RepLen As Long, FndLen As Long, SrcLen As Long, DiffLen As Long
ReplaceStr = CStr(Nz(SrcString, ""))
SrcStart = 1
RepLen = Len(RepStr): FndLen = Len(FndStr): DiffLen = RepLen - FndLen
FndLen = FndLen - 1: SrcLen = Len(ReplaceStr)
Do
StrPos = InStr(SrcStart, ReplaceStr, FndStr, vbBinaryCompare)
If StrPos = 0 Then Exit Do
ReplaceStr = Left$(ReplaceStr, StrPos - 1) & RepStr _
& Right$(ReplaceStr, SrcLen - StrPos - FndLen)
SrcLen = SrcLen + DiffLen: SrcStart = StrPos + RepLen
Loop
End Function
補足
皆さん,早速の回答,有り難うございました。 説明不足だったのですが、 "ABC-BBD"の"ABC"を、"1000"に変換する ということをしたかったのです。 すいませんでした。