Vba Excel 2010:将文件夹中包含的图像拉入Excel单元格
我有一个包含电子表格的文件夹。在该电子表格旁边(电子表格所在的文件夹中),有一个名为“images”的文件夹。此文件夹中可能包含0到10000个图像,作为单独的png文件 这些文件的名称如下所示: 00001.png 00010.png 00100.png 01000.png 10000.png (其中“…”表示多个文件之间的间隙,请记住,文件以1的增量增加,例如:00001.png后面紧跟00002.png) 我要求上述电子表格(包含在与“images”文件夹相同的文件夹中,但不包含在“images”文件夹本身中)能够通过,但这些图像中的许多恰好出现在10000个长单元格范围的“C3:C10002”(C3到C10002)中 仅当图像存在时,才应拉取图像;如果图像不存在,则电子表格/VBA宏/脚本不应崩溃,从而损害用户的利益 这极有可能需要某种类型的Excel VBA宏,只需按下按钮即可运行(我知道如何插入宏按钮) 脚本不应改变图像的大小/尺寸。包含单元格的宽度和高度应进行调整,以完全适合图像 我知道Excel单元格具有最大高度/宽度,并且必须对图像进行预优化以适合单元格。我希望图像显示为大约3英寸宽1.6英寸高的缩略图(不确定像素是多少!)Vba Excel 2010:将文件夹中包含的图像拉入Excel单元格,vba,excel,excel-2010,Vba,Excel,Excel 2010,我有一个包含电子表格的文件夹。在该电子表格旁边(电子表格所在的文件夹中),有一个名为“images”的文件夹。此文件夹中可能包含0到10000个图像,作为单独的png文件 这些文件的名称如下所示: 00001.png 00010.png 00100.png 01000.png 10000.png (其中“…”表示多个文件之间的间隙,请记住,文件以1的增量增加,例如:00001.png后面紧跟00002.png) 我要求上述电子表格(包含在与“images”文件夹相同的文件夹中,但不包含在
我非常感谢任何帮助。。。即使您不能推荐一些可以实现所有这些的东西,“最佳快照”也会受到热烈欢迎。我有一段代码可以帮助您将图像添加到工作表中,您可以修改它以在多个文件中循环,并根据文件名添加图像文件:
Sub AddPictures()
DirForImages = "S:\TCarnevale\Overdrive Images\"
Dim counter As Integer
Dim vsn As Boolean
Dim myrange As Range
ActiveSheet.Pictures.Delete
Range("Y15").Select
For I = 0 To 400
DoEvents
'Set picture range depending on count, *modify below set of code to add/remove styles*
Set Rng = Range("A8")
'get the style number to pull the image from the directory
styleinfo = ActiveCell.Value
If Dir(DirForImages & styleinfo & ".jpg") <> "" Then
Set pic = ActiveSheet.Shapes.AddPicture(DirForImages & styleinfo & ".jpg", False, True, 1, 1, 1, 1)
'resize the image
With pic
.Height = 100
.Width = 75
.Left = Rng.Left
.Top = Rng.Top
End With
counter = counter + 1
ElseIf Dir(DirForImages & styleinfo & ".png") <> "" Then
Set pic = ActiveSheet.Shapes.AddPicture(DirForImages & styleinfo & ".png", False, True, 1, 1, 1, 1)
'resize the image
With pic
.Height = 100
.Width = 75
.Left = Rng.Left
.Top = Rng.Top
'
End With
counter = counter + 1
Else
counter = counter + 1
End If
ActiveCell.Offset(1, 0).Select
Next
Range("Y17").Select
Range("A1").Select
End Sub
子添加图片()
DirForImages=“S:\TCarnevale\Overdrive Images\”
作为整数的Dim计数器
Dim-vsn为布尔型
将myrange变暗为Range
ActiveSheet.Pictures.Delete
范围(“Y15”)。选择
对于I=0到400
多芬特
'根据计数设置图片范围,*修改下面的代码集以添加/删除样式*
设置Rng=范围(“A8”)
'获取样式编号以从目录中提取图像
styleinfo=ActiveCell.Value
如果Dir(DirForImages&styleinfo&“.jpg”)”,那么
设置pic=ActiveSheet.Shapes.AddPicture(DirForImages&styleinfo&“.jpg”,False,True,1,1,1)
'调整图像大小
带图片
.高度=100
.宽度=75
.左=右左
.Top=Rng.Top
以
计数器=计数器+1
ElseIf Dir(DirForImages&styleinfo&“.png”)“然后
设置pic=ActiveSheet.Shapes.AddPicture(DirForImages&styleinfo&“.png”,False、True、1、1、1)
'调整图像大小
带图片
.高度=100
.宽度=75
.左=右左
.Top=Rng.Top
'
以
计数器=计数器+1
其他的
计数器=计数器+1
如果结束
ActiveCell.Offset(1,0)。选择
下一个
范围(“Y17”)。选择
范围(“A1”)。选择
端接头
这段代码检查PNG文件和JPG文件,并以像素为单位重新调整它们的大小。您可以使用将英寸转换为像素。我有此代码可帮助将图像添加到图纸中,您可以将其修改为在多个文件中循环,并根据文件名添加图像文件:
Sub AddPictures()
DirForImages = "S:\TCarnevale\Overdrive Images\"
Dim counter As Integer
Dim vsn As Boolean
Dim myrange As Range
ActiveSheet.Pictures.Delete
Range("Y15").Select
For I = 0 To 400
DoEvents
'Set picture range depending on count, *modify below set of code to add/remove styles*
Set Rng = Range("A8")
'get the style number to pull the image from the directory
styleinfo = ActiveCell.Value
If Dir(DirForImages & styleinfo & ".jpg") <> "" Then
Set pic = ActiveSheet.Shapes.AddPicture(DirForImages & styleinfo & ".jpg", False, True, 1, 1, 1, 1)
'resize the image
With pic
.Height = 100
.Width = 75
.Left = Rng.Left
.Top = Rng.Top
End With
counter = counter + 1
ElseIf Dir(DirForImages & styleinfo & ".png") <> "" Then
Set pic = ActiveSheet.Shapes.AddPicture(DirForImages & styleinfo & ".png", False, True, 1, 1, 1, 1)
'resize the image
With pic
.Height = 100
.Width = 75
.Left = Rng.Left
.Top = Rng.Top
'
End With
counter = counter + 1
Else
counter = counter + 1
End If
ActiveCell.Offset(1, 0).Select
Next
Range("Y17").Select
Range("A1").Select
End Sub
子添加图片()
DirForImages=“S:\TCarnevale\Overdrive Images\”
作为整数的Dim计数器
Dim-vsn为布尔型
将myrange变暗为Range
ActiveSheet.Pictures.Delete
范围(“Y15”)。选择
对于I=0到400
多芬特
'根据计数设置图片范围,*修改下面的代码集以添加/删除样式*
设置Rng=范围(“A8”)
'获取样式编号以从目录中提取图像
styleinfo=ActiveCell.Value
如果Dir(DirForImages&styleinfo&“.jpg”)”,那么
设置pic=ActiveSheet.Shapes.AddPicture(DirForImages&styleinfo&“.jpg”,False,True,1,1,1)
'调整图像大小
带图片
.高度=100
.宽度=75
.左=右左
.Top=Rng.Top
以
计数器=计数器+1
ElseIf Dir(DirForImages&styleinfo&“.png”)“然后
设置pic=ActiveSheet.Shapes.AddPicture(DirForImages&styleinfo&“.png”,False、True、1、1、1)
'调整图像大小
带图片
.高度=100
.宽度=75
.左=右左
.Top=Rng.Top
'
以
计数器=计数器+1
其他的
计数器=计数器+1
EN