見出し画像

フルパスからファイル名だけにするよ

この説明は、ChatGPTで作成しています。

このプロシージャは、セルに入力されたフルパスの文字列からファイル名だけを抽出して、セルの内容をそのファイル名に置き換えるためのものです。以下に、このプロシージャの仕組みを説明します。

1. 画面更新の停止

まず、Excelの画面更新を停止します。これは、処理の間に画面が頻繁に更新されないようにして、処理速度を向上させるためです。

Application.ScreenUpdating = False

2. 正規表現オブジェクトの作成

次に、正規表現を使用するためのオブジェクトを作成します。正規表現とは、文字列のパターンを指定して、そのパターンに一致する文字列を検索、置換、抽出するためのものです。

Dim reg
Set reg = CreateObject("VBScript.RegExp")   'オブジェクト作成

3. 変数の宣言

範囲内のセルを一つずつ処理するための変数を宣言します。

Dim myRng As Range
Dim txt As String
Dim i As Long

4. 正規表現のパターン設定

次に、正規表現のパターンを設定します。このパターンは、バックスラッシュ(\)で区切られた最後の部分、つまりファイル名に一致するようになっています。

With reg
    .Pattern = "([^\\]+?)?$"
    .IgnoreCase = True
    .Global = True
End With

5. エラーハンドリングの設定

エラーが発生しても無視して次のセルに進むように設定します。

On Error Resume Next

6. セルの処理

選択されたセルのそれぞれについて、以下の処理を行います。

  1. セルの値を取得します。

  2. その値が正規表現に一致するかどうかをチェックします。

  3. 一致する場合は、その部分を抽出してセルの値を置き換えます。一致しない場合は、そのままにします。

For Each myRng In Selection
        txt = myRng.Value
        If reg.Test(txt) Then
            txt = reg.Execute(txt)(0).Value
        Else
            txt = txt  ' マッチしない場合はそのまま
        End If
        myRng.Value = txt
Next myRng

7. 画面更新の再開

最後に、Excelの画面更新を再開します。

Application.ScreenUpdating = True

これで、選択された範囲内のセルのフルパスがファイル名だけに置き換わります。


Extracting File Names from Full Paths

This explanation is created using ChatGPT.

This procedure extracts only the file name from a full path string entered in the cells and replaces the cell content with that file name. Here’s a breakdown of how this procedure works.

1. Turning Off Screen Updating

First, screen updating in Excel is turned off to improve processing speed by preventing frequent screen refreshes during the operation.

Application.ScreenUpdating = False

2. Creating a Regular Expression Object

Next, an object for regular expressions is created. Regular expressions are used to specify a pattern for searching, replacing, or extracting matching strings.

Dim reg
Set reg = CreateObject("VBScript.RegExp")   'Create object

3. Declaring Variables

Variables for processing each cell in the range are declared.

Dim myRng As Range
Dim txt As String
Dim i As Long

4. Setting the Regular Expression Pattern

The pattern for the regular expression is then set. This pattern matches the last part of the string separated by a backslash (\), which is the file name.

With reg
    .Pattern = "([^\\]+?)?$"
    .IgnoreCase = True
    .Global = True
End With

5. Applying Error Handling

An error-handling setting is applied to ignore errors and proceed to the next cell.

On Error Resume Next

6. Processing Each Cell

For each selected cell, the following operations are performed:

  1. The value of the cell is obtained.

  2. It checks if the value matches the regular expression.

  3. If it matches, the matching part is extracted and the cell value is replaced with it. If not, the value remains unchanged.

For Each myRng In Selection
        txt = myRng.Value
        If reg.Test(txt) Then
            txt = reg.Execute(txt)(0).Value
        Else
            txt = txt  ' If not matching, keep it as it is
        End If
        myRng.Value = txt
Next myRng

7. Turning On Screen Updating

Finally, screen updating in Excel is turned back on.

Application.ScreenUpdating = True

This replaces the full path in the selected range with just the file name.



キーワード
#excel #できること #vba #正規表現 #ファイル名抽出 #フルパス #Excel操作 #セル内容変更 #プログラミング初心者 #VBA解説 #オブジェクト作成 #パターンマッチング #エラーハンドリング #文字列操作 #コード解説 #自動化 #業務効率化 #マイクロソフトエクセル #エクセル関数 #ファイル操作

いいなと思ったら応援しよう!