• 締切済み

アクセスDBファイルの複数テーブルの文字列を簡単に置換するには?

アクセスのデータベースファイル内30テーブルほどの データがあります。 そのデータ内にあるひとつの文字(例えばABC)という 文字列があり,それを別の文字列(例:1000)に一括して 置き換えたいのですが,今のところ,一つ一つテーブルを 開いて置換コマンドを使って文字列を入力しています。 しかし、データベース内にあるABCと言う変数は計算に 使用するためその都度変更する必要があるため、とても面倒に感じています。 アクセスだけでこの作業はできるのでしょうか。 もし、できなければ外部プログラムでなにか良いものが あるでしょうか。ご教授ください。 よろしくお願いします。

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

以下のような内容のモジュールを作成して、 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

  • yaasan
  • ベストアンサー率22% (2724/12278)
回答No.2

mnabeさんと重なるところがありますが、変換するデータが "ABC"という文字列を"1000"という文字列に変換するので あれば、クエリーの中にある更新クエリーで抽出条件を "ABC"にして、レコードの更新を"1000"にすると一度に 変換できます。それをテーブルごとに作成しマクロで順番 にクエリーを動かしていけば、初めに作成するときは時間 がかかりますが、二度目からはマクロ一つ動かすだけで できますよ。  また、文字列"ABC-BBD"の中の"ABC"を"1000"に変換して "1000-BBD"にしたい場合はmnabeさん同様に補足をください。

  • mnabe
  • ベストアンサー率33% (427/1283)
回答No.1

変換の方法はいくらでもありますが、その前に一つ確認。 変換するデータは、  フィールドAにある"ABC"ってデータを、"1000"に変換でOKなのでしょうか?  それとも、フィールドAにある、"ABC-BBD"の"ABC"を、"1000"に変換なのでしょうか?  前者なら、テーブル毎に UPDATE テーブル名 SET テーブル名.フィールドA = '1000' を実行すれば変換出来ます。後者は、書くのが面倒なので割愛。後者の場合には、補足下さいね(^^;

katukoyo
質問者

補足

皆さん,早速の回答,有り難うございました。 説明不足だったのですが、 "ABC-BBD"の"ABC"を、"1000"に変換する ということをしたかったのです。 すいませんでした。

関連するQ&A