PR

Access VBA逆引き集|InStr関数で文字列検索を自在に操る実践テクニックとCopilot活用術

Access学習

Access VBAで業務システムを開発していると、

  • ファイル名に特定文字が含まれているか確認したい
  • CSVファイルか判定したい
  • メールアドレスを簡易チェックしたい
  • 商品コードの種類を判定したい
  • エラーログから特定文字列を抽出したい

という場面が頻繁にあります。

InStr関数を使いこなせるようになると、文字列検索処理の大半を効率よく実装できるようになります。

CSV取込システム、ファイル自動取込、設備管理システム、顧客管理システムなど、実務で非常に利用頻度の高い関数です。またCopilotが生成するコードにも頻繁に登場するため、理解しておく価値があります。


スポンサーリンク

InStr関数とは

InStr関数は、

指定文字列の中に

特定文字が

含まれているか

を調べる関数です。


基本構文

InStr( 対象文字列, 検索文字列)

サンプル

InStr( "AccessVBA", "VBA")

結果

7

が返ります。


戻り値の意味

見つかった場合

開始位置

が返ります。


見つからない場合

0

が返ります。


逆引き① CSVファイルか判定したい

実務で非常によく利用します。

If InStr( strFileName, ".csv") > 0 Then

 MsgBox "CSVです"

End If

判定例

TEST.csv

True


逆引き② メールアドレスをチェックしたい

簡易チェックです。

If InStr( strMail, "@") = 0 Then

 MsgBox "メール形式エラー"

End If

判定例

abc@test.co.jp

正常


逆引き③ 商品コードを判定したい

商品区分です。

If InStr( strCode, "EQ") > 0 Then

 MsgBox "設備コード"

End If

判定例

EQ-0001

設備


逆引き④ 特定フォルダか調べたい

パス判定です。

If InStr( strPath, "\IMPORT") > 0 Then

End If

活用

取込フォルダ

バックアップフォルダ

判定


逆引き⑤ エラーメッセージ判定をしたい

ログ解析で利用します。

If InStr( strError, "File not found") > 0 Then

End If

実務活用例① CSV自動取込

フォルダ監視です。

If InStr( strFile, ".csv") > 0 Then

 Call ImportCsv

End If

効果

CSVだけ取込

が可能になります。


実務活用例② 顧客管理システム

メールアドレス確認です。

If InStr( Nz(Me!メールアドレス, ""), "@") = 0 Then

 MsgBox "メール形式不正"

End If

効果

入力ミス防止になります。


実務活用例③ ファイル自動取込

ファイル種別判定です。

If InStr( strFileName, ".xlsx") > 0 Then

 Call ImportExcel

End If

活用例

CSV

Excel

PDF

の判別ができます。


実務活用例④ 設備管理システム

設備区分判定です。

If InStr( strEquipmentNo, "EQ") > 0 Then

End If

区分

EQ

MC

MT

などを分類できます。


実務活用例⑤ ログ分析

ログ抽出です。

If InStr( strLog, "ERROR") > 0 Then

End If

効果

エラーだけ抽出できます。


InStrRevとの違い

初心者が混乱しやすいポイントです。


InStr

先頭から検索

InStr

InStrRev

後ろから検索

InStrRev

ファイル名取得例

Mid( strPath, InStrRev(strPath, "") + 1)

結果

C:\DATA\Test.csv

Test.csv


大文字小文字を無視したい

比較方法です。


通常

InStr( "ABC", "abc")

結果

0


UCase利用

If InStr( UCase(strData), "ABC") > 0 Then

安全です。


Split関数との組み合わせ

実務ではセット利用します。


先に判定

If InStr( strData, ",") > 0 Then

分割

arr = Split( strData, ",")

CSV解析で定番です。


Replace関数との組み合わせ

データクレンジングです。

If InStr( strData, "-") > 0 Then

 strData = Replace( strData, "-", "")

End If

効率的です。


Copilot活用術① ファイル判定処理作成

Copilotへの依頼例です。

Access VBAです。

CSVファイルかどうか

InStr関数で判定する

コードを作成してください。


Copilot活用術② メールチェック作成

Access VBAです。

メールアドレスに

@が含まれるか

確認するコードを

作成してください。


Copilot活用術③ ログ解析支援

Access VBAです。

ERRORを含む行だけ

抽出するコードを

作成してください。

Copilotとの相性も非常に良い関数です。


InStr利用時の注意点

見つからない場合

0

になります。


存在確認の定番

If InStr( strData, "ABC") > 0 Then

です。


Null対策

安全な書き方です。

If InStr( Nz(strData, ""), "ABC") > 0 Then

開発現場での利用頻度

実務での利用頻度です。

順位用途
1位CSV判定
2位ファイル判定
3位ログ解析
4位メールチェック
5位コード分類

ほぼ毎日利用します。


InStr関数を覚えるメリット

次のような効果があります。

  • CSV取込の品質向上
  • ファイル自動化処理の効率化
  • 入力チェック強化
  • ログ分析の効率化
  • Copilot生成コードの理解向上

特に自動化システムでは必須レベルです。


まとめ

InStr関数はAccess VBA開発において最も使用頻度の高い検索関数の一つです。

特に

  • CSV取込
  • ファイル自動取込
  • メールアドレスチェック
  • 設備管理
  • ログ解析

などで大きな効果を発揮します。

またCopilotを活用することで、

  • 検索処理コード生成
  • 入力チェック作成
  • ログ解析ロジック作成

も効率化できます。

派手な関数ではありませんが、業務システムを開発する上では欠かせない重要関数です。Access VBA開発者なら確実に習得しておきましょう。

Access VBA逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応 | E-Trainer.jp[中村峻] |本 | 通販 | Amazon
AmazonでE-Trainer.jp[中村峻]のAccess VBA逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応。アマゾンならポイント還元本が多数。E-Trainer.jp…

コメント

タイトルとURLをコピーしました