いくつかの製品 ID コードを含む Excel シートがあります
100-10R 23P901……
商品画像を保存するフォルダがあります。画像の最初に製品コードがありますが、最後は異なる場合があります。
製品コードに基づいて、外部フォルダーにある画像を Vloopup できるかどうかは誰にもわかりませんか?
FileSystemObject を調べる必要があります。これにより、FileSystem に関係するものを調べることができます。
簡単な例を作成しましたが、完全には確信が持てなかったので、あなたがやろうとしていることのようにはならないかもしれません. かなり理解しやすいと思います。
次のコードをモジュール内に配置すると、ワークシートの「checkList」関数にアクセスできます。
checkList 関数は、指定されたフォルダーからキャッシュされたファイル名のリストをループし、パラメーター "Name" がリストに格納されているアイテムのいずれかと一致するかどうかを確認します。
キャッシュされたファイルのリスト (FileList コレクション) は、loadList サブルーチンによって最初に checkList が呼び出されたときに、一度読み込まれます。
loadList サブルーチンは、指定されたフォルダーを読み取り、すべてのファイル名をコレクションに追加します。
' Global Variable, used to cache the filenames
Public FileList As Collection
' this function returns "" if no match was found, and returns the file name if found.
Public Function checkList(ByVal Name As String) As String
Dim Result As String
Dim Item As Variant
Result = ""
If FileList Is Nothing Then
loadList
End If
For Each Item In FileList
' Performs a simple match on the filename, probably needs to be adjusted!
If Item Like Name & "*" Then
Result = Item
End If
Next Item
checkList = Result
End Function
' populates the FileList collection
Public Sub loadList()
Dim FSO As Object
Dim Folder As Object
Dim File As Object
If FileList Is Nothing Then
' First Run, needs to be created
Set FileList = New Collection
Else
' Should not happen unless you call it manually.
Set FileList = Nothing ' Clear up the old list
Set FileList = New Collection ' Create a new empty one
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
' Change "C:\" to the location of the folder you want to search
Set Folder = FSO.GetFolder("C:\")
For Each File In Folder.Files
' Add the name to the FileList
FileList.Add File.Name
Next
End Sub