Excel宏放置图像,但当其他人打开工作簿时它们不会出现

时间:2016-10-13 18:59:24

标签: excel vba excel-vba macros

我一直在努力工作,拼命地拼凑出一个巨大的宏观,用于我在互联网上找到的工作。目的是最终格式化报告。

这部分代码从一个单元格中获取值,并在给定的文件夹中找到分别命名的图像文件,然后插入"图像进入某个细胞。 (我知道它在技术上并没有插入它,但仍然。)

问题是其他人需要查看这些报告,但是当我将工作簿发送给他们时,图像不会显示。我不知道如何纠正这个问题,这是一件大事。我正在帮助你,请帮助我找到一种方法,以便其他员工能够看到图像!我的工作可能取决于它! :(

Dim pictureNameColumn As String
Dim picturePasteColumn As String
Dim pictureName As String
Dim lastPictureRow As Long
Dim pictureRow As Long
Dim pathForPicture As String
pictureNameColumn = "A"
picturePasteColumn = "B"
pictureRow = 4
lastPictureRow = Cells(Rows.Count, pictureNameColumn).End(xlUp).Row
pathForPicture = "C:\Users\desid\reportimages\" 
Do While (pictureRow <= lastPictureRow)
pictureName = Cells(pictureRow, "A")
If (pictureName <> vbNullString) Then
If (Dir(pathForPicture & pictureName & ".jpg") <> vbNullString) Then
Cells(pictureRow, picturePasteColumn).Select
ActiveSheet.Pictures.Insert(pathForPicture & pictureName & ".jpg").Select
With Selection
.Left = Cells(pictureRow, picturePasteColumn).Left + 30
.Top = Cells(pictureRow, picturePasteColumn).Top + 3
.ShapeRange.LockAspectRatio = msoTrue 
.ShapeRange.Height = 90#
.ShapeRange.Width = 90#
.ShapeRange.Rotation = 0#
End With

2 个答案:

答案 0 :(得分:0)

如果人们必须运行宏,那么这就是问题所在: 如果无法访问filePath,If (Dir(pathForPicture & pictureName & ".jpg") <> vbNullString)将返回False。尝试找一个公共文件夹来放你的照片。我没有解决你的问题,但至少现在你知道问题的来源。

答案 1 :(得分:0)

不要使用ActiveSheet.Pictures.Insert插入图片,而是尝试使用此方法嵌入图片。另请注意,Cells不接受字母作为列名,它需要列数,因此“A”变为1:

Dim repPic as Shape
Dim pictureNameColumn As Long
Dim picturePasteColumn As Long
Dim Lft as Single
Dim Tp as Single
Dim Wdth as Single
Dim Hgth as Single
pictureNameColumn = 1
picturePasteColumn = 2
Lft = Cells(pictureRow, picturePasteColumn).Left + 30
Tp = Cells(pictureRow, picturePasteColumn).Top + 3
Wdth = Cells(pictureRow, picturePasteColumn).Width
Hgth = Cells(pictureRow, picturePasteColumn).Height
Set repPic = Application.ActiveSheet.Shapes.AddPicture(pathForPicture & pictureName & ".jpg", False, True, Lft,Tp,Wdth,Hgth)

这样可以将图片保存在文件中。您将不得不弄清楚如何使用wdth和hgth计算出图片的大小,因为使用此方法时,您必须在插入图片时指定宽度和高度。我建议的解决方案在代码中,但它可能不适用于您的设置。

希望这会有所帮助,如果确实如此,请将答案标记为已接受。祝你好运!