ACCESS Replace関数で文字を置換する方法(VBAコード公開)

Replace関数で文字を置換する方法

ACCESSで文字列を一定のルールに沿って置換する際に使用するのがReplace関数です。
Replace関数は非常に利用頻度の高い関数ですが、意図通りに変換するには工夫が必要です。

今回は、Replace関数の機能と実務での利用シーンをご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSをもっと使いこなしたい方向けにACCESSの関数をご紹介していきます。

Replace関数の構文

最初にReplace関数の構文を示します。

Replace ( ①置換前の文字列全体 , ②置換対象文字列 , ③置換後文字列 , ④検索開始位置 , ⑤置換回数 , ⑥比較方法 )

引数は多いですが、比較的理解しやすい構文でしょう。

日本語で記載すると、

「①置換前の文字列全体」を対象に、
「④検索開始位置」から
「⑤置換回数」分だけ
「⑥比較方法」に基づいて
「②置換対象文字列」を
「③置換後文字列」に変換する

となります。

それぞれの引数の意味を解説します。

引数説明
①置換前の文字列全体置換対象の文字列や文章全体を指定します。実務では直接テキストを指定するよりは、変数で指定する場合が多いでしょう。
②置換対象文字列置換する対象の文字を指定します。上記の置換前の文字列全体に含まれる置き換える文字です。
③置換後文字列置換対象文字列を置き換えたい、結果の文字列です。
④検索開始位置置換対象文字列の検索を開始する位置です。省略可能で、省略すると「置換前の文字列全体」の最初から検索します。
⑤置換回数置換を行う回数です。省略可能で、省略した場合は可能な置換を全て行います。実務では省略することが多いでしょう。
⑥比較方法文字列の比較方法です。詳しくは後述します。

最後の引数である比較方法は以下のパターンがあります。
デフォルト値は-1ですが、バイナリとテキストのどちらで比較するかだけを意識しておけばよいでしょう。

定数説明
vbUseCompareOption-1Option Compare ステートメント(モジュールの先頭の記述する、文字列の比較方法を規定するステートメント)の設定を利用して比較。
vbBinaryCompare0バイナリモードで比較。大文字 / 小文字、全角 / 半角、ひらがな / カタカナを区別して比較。
vbTextCompare1テキストモードで比較。大文字 / 小文字、全角 / 半角、ひらがな / カタカナを区別せず比較。
vbDatabaseCompare2Microsoft Office Access 2007 のみ。 データベース内の情報に基づいて比較。

大文字 / 小文字、全角 / 半角、ひらがな / カタカナを区別して比較したい場合はバイナリモードの0、そうでなければテキストモードの-1となります。

基本的な利用例

では実際の利用例を見てみましょう。
ここでは「base_string」という変数に、「ああいいううええおお」という文字列が入っている前提です。

置換前置換内容構文置換後
ああいいううええおお「い」を「き」に変更Replace(base_string, “い”, “き”)ああききううええおお
ああいいううええおお「あ」を一度だけ「か」に変更Replace(base_string, “あ”, “か”, 1, 1)かあいいううええおお
ああいいううええおお2つ目のうだけを「く」に変更Replace(base_string, “う”, “く”, 6, 1)くええおお

意図通りに置換を行うためには、引数の中でも④検索開始位置 , ⑤置換回数をうまく利用する必要があります。
上記の例は非常に基礎的な内容ですので引数を数値で指定していますが、実際には複数のレコードのデータを一括処理するためにこれらの引数は変数や関数で指定することの方が多いでしょう。

Replace関数を利用したcsvファイルの文字置換

最後にかなり複雑な利用例として、csvファイルをACCESSへデータをインポートする前の、テキスト上でのデータ整形処理でReplace関数を利用する例を示します。

例えば、下記のようにimp_txtというcsvファイルを、IMP_TBLというテーブルに取り込みたいとします。
しかし、imp_txtの一行目(フィールド列)の文字に「/」が入っていました。

ACCESSのフィールド名にこのような特殊文字が入るとうまく動作せず、エラーの原因となります。
そこで、取り込み前にReplace関数を使って、「/」を置換して除去する、という処理をしています。

処理を解説しましょう。
まず処理全体としてはACCESSにインポートする前のcsvファイルを操作しますので、FileSystemObjectを使用します。

csvファイルの内容を imp_txt という変数に読み込みます。
そして、tmp_line という変数に ReadLine メソッドを使って、csvファイルを一行ずつ読み込んでいきます。

読み込み後に、1行目のみReplace関数で「/」を削除する処理を行っています。

そして、変更した tmp_line の内容を、テキストデータの蓄積用変数である tmp_txt に一行ずつ書き込んでいきます。

2行目以降は特に処理をしていませんが、Do Loop構文で、一行読み込み→一行追加を繰り返して、 tmp_txt にデータを入れていきます。

最後に、出来上がった tmp_txt を出力用ファイルである exp_file に書き込み、ACCESSへのインポート処理を行います。

以上、Replace関数で文字を置換する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です