Vba Excel 2010:将文件夹中包含的图像拉入Excel单元格

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”文件夹相同的文件夹中,但不包含在

我有一个包含电子表格的文件夹。在该电子表格旁边(电子表格所在的文件夹中),有一个名为“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英寸高的缩略图(不确定像素是多少!)


我非常感谢任何帮助。。。即使您不能推荐一些可以实现所有这些的东西,“最佳快照”也会受到热烈欢迎。

我有一段代码可以帮助您将图像添加到工作表中,您可以修改它以在多个文件中循环,并根据文件名添加图像文件:

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