1

我以前问过一个问题,但似乎没有人可以回答。所以,我现在改变我的问题。我发现实际上此代码有效并将图片复制到剪贴板。但是当代码在 WinXp 上运行时,它似乎无法正常工作,甚至无法检测到 Clipboard.ContainImage。那么有谁知道如何解决这个问题或任何指南?

For Each sp As EXCEL.Shape In xlsheet.Shapes
                    sp.Copy()
                    picname = sp.Name
                    If Strings.Left(picname, 5) = "Group" Then
                        If My.Computer.Clipboard.ContainsImage Then
                            xlPic = My.Computer.Clipboard.GetImage
                            PictureBox1.Image = xlPic
                            ImageList1.Images.Add(xlPic)
                        Else
                            sp.Copy()
                            xlPic = My.Computer.Clipboard.GetImage
                            PictureBox1.Image = xlPic
                            ImageList1.Images.Add(xlPic)
                        End If
                    End If
                Next

更新

实际上我在这些代码中没有错误。但问题是。当我在 Win XP 上运行此应用程序时。Clipboard.ContainsImage 无法检测到,我的 PictureBox 无法获取剪贴板中包含的图像。我试图粘贴到Paint,它可以,但通过程序运行,它不能。在Win 7中运行时,它运行良好。

4

3 回答 3

1

试试这个,它适用于 Win XP、VS2010 和 Excel2007:

 appExcel = CreateObject("Excel.Application")
 wbExcel = appExcel.Workbooks.Open(Filename)
 wsExcel = wbExcel.Worksheets(1)

 For Each oShape As Shape In wsExcel.Shapes

                    If oShape.Name.StartsWith("Picture") Then
                        Clipboard.Clear()
                        oShape.CopyPicture(XlPictureAppearance.xlScreen, XlCopyPictureFormat.xlBitmap)

                        If Clipboard.ContainsImage() Then
                            Dim img As Image
                            img = Clipboard.GetImage()
                            PictureBox1.Image = img
                            PictureBox1.Visible = True
                            Exit For
                    End If
                Next oShape
于 2015-07-02T17:34:30.990 回答
0

您不能(可靠地)期望将数据复制到剪贴板,然后立即能够粘贴它。其他应用程序正在对剪贴板更新做出反应,同时可能会发生很多事情。您可能/很可能无法粘贴图像,因为其他一些应用程序已打开剪贴板进行粘贴。您可以在复制之后引入 sleep() ,然后摆脱它。请记住,以这种方式使用剪贴板是不好的做法。提供剪贴板是为了方便用户,而不是程序员。

于 2013-06-24T12:25:23.887 回答
-1

尝试替换所有实例

sp.copy()

my.computer.clipboard.setimage(sp)

setImage 方法文档可以在这里找到:http: //msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.setimage.aspx

于 2013-06-24T07:58:33.080 回答