Excel VBA addPicture by path to image

时间:2016-10-06 11:43:30

标签: macos vba excel-vba excel-vba-mac excel

我在Windows上写了一个VBA宏。此宏根据单元格的值将图片添加到我的Excel工作表中,例如'image.png'。这些图像与我的Excel工作簿位于同一目录中。 VBA将获取工作簿的路径并使用它来查找单元格中指定的图像。这适用于Windows,但它不适用于Mac。宏返回错误(1004),表示无法找到指定的文件。

Sub InsertImage()
    Dim useless As Double
    Dim clTop As Double
    For Each c In ActiveSheet.Range("C3:C200").Cells
       If c.Value = "" Then
           useless = 1
       Else
           Set cl = Range(c, c.Offset(0, 1))
           clTop = cl.Top
           ActiveSheet.Shapes.AddPicture _
           Application.ActiveWorkbook.Path & "\" & c.Value, _
           True, True, 500, clTop, 140, 140
       End If
    Next
    End Sub

更新

做了一些测试:当我第一次手动添加我要添加的所有图片时,立即将它们全部删除,然后运行完全相同的宏,所有图片都完美地导入。这可能是Excel for Mac中的一个错误吗?

2 个答案:

答案 0 :(得分:1)

在此处留下答案,以防万一有人用VBA(像我一样)将头撞到墙上试图将多张图片插入到Mac版Excel中时仍然找到此页面。我在此站点上找到了GrantAccessToMultipleFiles帮助,终于为我修复了它: https://warwick.ac.uk/fac/sci/systemsbiology/staff/dyer/software/excelvbafileopen/

答案 1 :(得分:0)

Mac不使用与Windows相同的路径分隔符(或者甚至彼此使用)。将代码更改为:

ActiveSheet.Shapes.AddPicture _
           Application.ActiveWorkbook.Path & Application.PathSeparator & c.Value, _
           msoFalse, msoTrue, 500, clTop, 140, 140