プロが教える店舗&オフィスのセキュリティ対策術

"サービス情報"というシート上のF列に文字列(フルパス)が並んでおります。
ここからファイル名のみを取得して、H列に張り付けたいと考えております。


補足
-F列のデータ(行)数は決まっておりません。また、F列が空白である場合があるため、データ(行)数はA列の行数を基準にするつもりです。

よろしくお願いします。

A 回答 (2件)

こんにちは。



ご質問には、実際にファイル名が存在しているのか書かれていませんので、二種類のコードが考えられます。

'HDD に実際にあるファイル名の場合
Sub FilenamesPickup()
Dim LastRow As Long
Dim c As Range
Dim fn As String
'A列の最後尾を探す
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
'F列のフル・ファイル名が実在しているかをチェック
For Each c In Range("F1", Cells(LastRow, "F"))
 If c.Value <> "" Then
  fn = Dir(c.Value, vbNormal)
  If fn <> "" Then
   c.Offset(, 2).Value = fn
   End If
 End If
Next c
End Sub

'実在していないファイル名の場合は
Sub FilenamesPickup2()
Dim LastRow As Long
Dim c As Range
Dim i As String
'A列の最後尾を探す
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each c In Range("F1", Cells(LastRow, "F"))
 If c.Value <> "" Then
  '最後のパスファインダー¥を探す
  i = InStrRev(c.Value, "\")
  If i > 0 Then
   c.Offset(, 2).Value = Mid(c.Value, i + 1)  
   End If
 End If
Next c
End Sub
    • good
    • 0

Dim strFnam As String


Dim lngIti As Integer
Dim strPATH As String

strPATH = "C:\TEST\DATA\KONODATA.XLSX" '==これが調べたいものとすると

strFnam = ""
lngIti = InStrRev(strPATH, "\") '==後ろから見ていって最初に見つかる \ の位置
If lngIti <> 0 Then '==\が見つからない場合はファイル名がない
strFnam = Mid$(strPATH, lngIti + 1)
End If

MsgBox strFnam ’==こんな結果になる
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!