VBA根据字符串名称从文件夹中获取图片。包含通配符

emihir0

我有一个具有160行和2列数据的Excel文件-文章名称,价格。我也有一个文件夹,其中包含这些文章的照片。

问题在于图片名称与我的Excel工作表中的文章名称不完全相同。

例如,在我的表我有商品名:“3714-012-P140”,但该文件夹中这将是“3714-012-P140- - - ****”。

但是,在最初的3个代码块(示例中为3714; 012; P140)之后,在搜索中始终只显示1张图片。

如何选择带有通配符的图片?

此外,我将如何将图片锁定到excel中的特定单元格中?我的意思是说,当我调整大小或删除某些行/列时,图片会沿着分配给它们的单元格移动。

Dim ws As Worksheet
Dim articleCode As String, _
    findStr     As String
Set ws = Workbooks(1).Worksheets(1)

For i = 1 to ws.UsedRange.Rows.Count
    articleCode = ws.Cells(i,1)
    findStr = 'some code
    ActiveSheet.Pictures.Insert( _
        "C:\...path...\" & findStr & ".jpg").Select
Next i

编辑:我需要将照片插入到数据的每一行的第三列中。

emihir0

下面的函数采用articleCode,即图片的名称,应在其中输入图片的行和列。

Function picInsert(articleCode As String, row As Integer, column As Integer)
Dim objFSO As Object
Dim objFolder As Object
Dim objFile As Object
Dim i As Integer
Dim ws As Worksheet
Set ws = Workbooks(1).Worksheets(2) 'your worksheet where the pictures will be put

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("...path...")

i = 1
For Each objFile In objFolder.Files
    If objFile.name Like (articleCode & "*") Then 'finds a picture with similar name to the one searched
        With ActiveSheet.Pictures.Insert(objFile.Path)
            With .ShapeRange
                .LockAspectRatio = msoTrue
                .Width = 5
                .Height = 15
            End With
            .Left = ActiveSheet.Cells(row, column).Left
            .Top = ActiveSheet.Cells(row, column).Top
            .Placement = 1 'locks the picture to a cell
        End With
    End If
    i = i + 1
Next objFile
End Function

这是我尝试上述功能的测试子。基本上,一个简单的循环遍历行,使用上面的函数从第一列获取articleCode并将图片输入第三列。

Public Sub test()
Dim ws As Worksheet
Dim i As Integer
Dim articleCode As String
Set ws = Workbooks(1).Worksheets(2)

For i = 1 To ws.UsedRange.Rows.Count
    articleCode = ws.Cells(i, 1)
    Call picInsert(articleCode, i, 3)
Next i
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 VBA,如何从路径字符串中获取直接父文件夹名称?

使用PySpark从名称不包含字符串的文件夹中读取文件

从字符串列表中获取文件夹名称

VBA在特定文件夹内的A列中查找字符串包含多种文件类型

如何检查文件夹中文件名中的元素是否包含字符串数组列表中的字符串名称?

识别文件夹名称中的字符串以创建变量(字符串)

获取名称中包含字符串的文件数

搜索并替换文件名中的字符串,而不会影响包含相同字符串的文件夹名称

获取包含字符串的文件的名称

复制整个文件夹结构,但通过两个不同的字符串根据文件夹名称过滤子文件夹?

将包含字符串的所有文件从多个子文件夹移动到父文件夹中

Windows 8获取文件夹名称列表作为字符串吗?

获取目录的文件夹名称并将它们插入字符串

在文件夹及其子文件夹内的所有文件中搜索字符串的vba

查找包含文本文件的文件夹中是否存在字符串

解析包含特殊文件夹的字符串

在特定扩展名的文件中搜索字符串后提取文件夹名称

VBA - Excel - 在文件夹中的多个文件中搜索多个字符串

将包含字符串的文件移动到与原始文件具有相同名称的子文件夹(PowerShell)

如何仅在名称包含某些字符串的某些文件夹下替换文件中的字符串

从父文件夹中获取文件夹的名称和其中包含的文件的链接

循环浏览包含特定字符串的 Outlook 中的特定子文件夹

如何遍历文件夹,将每个文件夹名称写入字符串数组

我想逐行处理文件夹中的每个文件并获取特定的匹配字符串

从选择字符串输出中获取“父文件夹+文件名”

获取包含文件夹的名称

从Android中的“值”文件夹中获取字符串资源

根据另一个文件中的字符串重命名文件夹中的文件 - 使用 Python

获取文件夹中的最新对象(不包括某些字符串)