将工作表复制到Excel 2007中的其他工作簿时,插入的图像无法显示

将工作表复制到Excel 2007中的其他工作簿时,插入的图像无法显示,excel,excel-2007,Excel,Excel 2007,在工作簿A中,我有一个宏,可以打开只读工作簿B,将4张工作表复制到工作簿A中,然后关闭工作簿B 其中一个复制的工作表包含两个插入的.PNG图像,但这些图像在复制到工作簿A后无法显示在工作表上 在我将工作簿B所在的网络文件夹添加到信任中心设置并勾选“高级选项”下的“剪切、复制、使用父单元格排序”选项后,我可以看到带有错误消息的图像轮廓 无法显示图像。。可能没有足够的内存..或图像已损坏 在复印的纸上 我怀疑这两个错误是否正确,因为如果我手动复制工作表,图像将成功显示 我记录了一个宏这样做,并将代码

在工作簿A中,我有一个宏,可以打开只读工作簿B,将4张工作表复制到工作簿A中,然后关闭工作簿B

其中一个复制的工作表包含两个插入的.PNG图像,但这些图像在复制到工作簿A后无法显示在工作表上

在我将工作簿B所在的网络文件夹添加到信任中心设置并勾选“高级选项”下的“剪切、复制、使用父单元格排序”选项后,我可以看到带有错误消息的图像轮廓

无法显示图像。。可能没有足够的内存..或图像已损坏

在复印的纸上

我怀疑这两个错误是否正确,因为如果我手动复制工作表,图像将成功显示

我记录了一个宏这样做,并将代码插入到宏中,但在运行它时刚刚得到上面的错误,这表明VBA是罪魁祸首

我还将工作簿解压缩为xlsx文件,以确认这两个图像都存储在xlsx文件中,而不是从其他地方导入

我曾考虑编写代码来显式复制和粘贴图像,但在VBA中看不到任何方法可以在目标工作表上编码希望粘贴图像的确切位置

我正在XP上运行Excel2007


有什么想法吗?

我一直无法解决复制的图像不显示的问题,自从发布后,我发现它们是否正确显示或生成错误消息似乎是随机发生的,但是我找到了一个可行的解决方法,删除复制表上的图像容器,然后从文件中插入徽标,然后把它们放在纸上

我修改了在以下位置找到的VBA代码: 详情如下:

Function InsertImageInRange(Image1_Filepath As String, Image2_Filepath As String, TargetSheet As String, TargetCell1 As Range, TargetCell2 As Range)
    ' Insert a picture(s) and resize to fit the TargetCells range
    ' This workaround deletes the image containers and copies in the original logos from file.

    Dim dblTop As Double, dblLeft As Double, dblWidth As Double, dblHeight As Double   
    Dim objImage As Object         

    Sheets(TargetSheet).Select  
    ' Check that images are valid
    bUnexpectedImage = True
    For Each img In ActiveSheet.Shapes
        If img.Name = "Picture 1" Or img.Name = "Picture 22" Then
            img.Delete
        Else
            bUnexpectedImage = False
        End If
    Next
    If bUnexpectedImage = False Then MsgBox ("Unexpected images found.")

    If TypeName(ActiveSheet) <> "Worksheet" Then Exit Function
    If Dir(Image1) = "" Then Exit Function

    ' Insert first logo
    Set objImage = ActiveSheet.Pictures.Insert(Image1)
    ' Determine positions
    With TargetCell1
        dblTop = .Top
        dblLeft = .Left
        dblWidth = .Offset(0, .Columns.Count).Left - .Left
        dblHeight = .Offset(.Rows.Count, 0).Top - .Top
    End With
    ' Position  & size image
    With objImage
        .Top = dblTop
        .Left = dblLeft + 13
        .Width = dblWidth + 25
        .Height = dblHeight + 15
    End With
    Set objImage = Nothing

    ' Insert second logo, as above...    
End Function