从excel获取图像的位置并在文本框中显示它

时间:2016-12-01 02:39:52

标签: excel vba vb6

我在VB6中有一个代码,它显示来自excel的图像到图片框中,这是代码。

Dim appExcel As Excel.Application
        Dim xlsBook  As Excel.Workbook
        Dim xlsSheet As Excel.Worksheet
        Dim img      As Image
        Set appExcel = New Excel.Application
        Set xlsBook = appExcel.Workbooks.Open(Text1.Text)
        Set xlsSheet = xlsBook.Worksheets("Sheet1")
        Dim x As Excel.Shape

        For Each x In xlsSheet.Shapes
            x.Copy
            Picture1.Picture = Clipboard.GetData(vbCFBitmap)
            Text2.Text = x.Name
        Next

在图片框附近,我还有一个文本框,我的目标是显示图像的单元格位置。我怎样才能做到这一点?

这是更新。

我的excel格式看起来像这样。

enter image description here

根据上面的代码,我可以为excel附近的每个对象显示从excel到picturebox的图像。我的问题是可以得到它们下方的标签吗?

更新

enter image description here

根据我使用的格式,我尝试在每个名为Image Name的图片中添加一个新列,并将名称IMAGE 1 ...添加到IMAGE 9,因为我有9张图片现在这是我的代码。

  Dim appExcel As Excel.Application
        Dim xlsBook  As Excel.Workbook
        Dim xlsSheet As Excel.Worksheet
        Dim img      As Image
        Dim rowlocation As Integer
        Dim columnlocation As Integer
        Dim celladdress As String

        Set appExcel = New Excel.Application
        Set xlsBook = appExcel.Workbooks.Open(Text1.Text)
        Set xlsSheet = xlsBook.Worksheets("Sheet1")


        Dim x As Excel.Shape


        For Each x In xlsSheet.Shapes
            x.Copy
            Picture1.Picture = Clipboard.GetData(vbCFBitmap)
            Text2.Text = x.Name
            rowlocation = x.TopLeftCell.Row
            columnlocation = x.TopLeftCell.Column
            celladdress = Cells(rowlocation + 3, columnlocation + 1).Address(RowAbsolute:=False, ColumnAbsolute:=False)
            MsgBox ActiveSheet.Range(celladdress)

        Next

当选择图片时,会出现正确的Image Name,例如在Image 2而不是图片名称,Image Name会显示。

1 个答案:

答案 0 :(得分:3)

假设Shape包含在单个单元格中,您可以使用:

x.TopLeftCell.Address

通过图片,它更有可能覆盖多个单元格,因此您可以构建它所占用的完整Range个单元格:

x.TopLeftCell.Address & ":" & x.BottomRightCell.Address