Excel VBA:如何检查单元格内的图片名称?

我在macros编写一个程序,将检查单元格中的图片的名称,然后根据图片的名称将值放在下一列。

我的程序只检查图片的名称是否存在于activesheet中。

我的目标是检查图片的名称是否在这个单元格上,然后根据图片的名称为下一列添加一个值。 非常感谢。

Sub CheckImageName() Dim iRowCountShapes As Integer Dim sFindShape As String iRowCountShapes = 2 While Sheets("Data").Cells(iRowCountShapes, 1) <> "" If Sheets("Data").Shapes("Rock").Name = "Rock" Then Sheets("Data").Cells(iRowCountShapes, 3) = "Rock" ElseIf Sheets("Data").Shapes("Roll").Name = "Roll" Then Sheets("Data").Cells(iRowCountShapes, 3) = "Roll" Else Sheets("Data").Cells(iRowCountShapes, 3) = "Neither" End If iRowCountShapes = iRowCountShapes + 1 Wend 

结束小组

在Excel中的图像可以被视为形状。 如果在插入时命名正确(使用真实文件名),则可以像这样遍历它们

 Private Sub CommandButton1_Click() Dim doc As Worksheet Dim spe As Shape Set doc = Worksheets(1) For i = 1 To doc.Shapes.Count - 1 Set spe = doc.Shapes(i) 'for named images Debug.Print doc.Shapes(i).Name spe.Select 'for linked images Debug.Print GetSourceInfo(spe) Next End Sub Function GetSourceInfo(oShp As Shape) As String On Error GoTo Error_GetSourceInfo GetSourceInfo = oShp.LinkFormat.SourceFullName Exit Function Error_GetSourceInfo: GetSourceInfo = "" End Function 

在我的情况下显示了Excel生成的图像名称:

  • 图片1
  • 图片2
  • 图片3

图片不在单元格中重放,它们位于工作表上方的图层中。 只需循环显示图片,并根据图片左上angular的单元格将相应列中的名称放在相应的列中即可:

 Sub CheckImageName() Dim pic As Excel.Picture For Each pic In ActiveSheet.Pictures pic.TopLeftCell.Offset(, 2).Value2 = pic.Name Next pic End Sub