如何在vba的窗体Image图像控件中显示excel工作表中创建的图表?

在vba窗体中,Image图像控件可以显示图片。

Image 图像控件可以显示的图片类型有以下几种

  • *.bmp

  • *.cur
  • *.gif

  • *.ico

  • *.jpg

  • *.wmf

Image图像控件不仅可以显示图片,还可以修剪、缩放图片。

要在Image图像控件中显示图片,需要设置Image图像控件的Picture属性,同时需要使用LoadPicture函数将图片加载到Picture属性中。

LoadPicture函数的语法如下:

LoadPicture([filename], [size], [colordepth],[x,y])

LoadPicture函数将返回一个IPictureDisp接口。

以下vba代码将本地C盘的abc.jpg图片加载到窗体名称为frm1的Image1图像控件中:

Sub QQ1722187970()
     frm1.Image1.Picture = LoadPicture("c:\abc.jpg")
End Sub

如果要将excel工作表中的创建的图表加载到Image1图像控件中,首先需要将excel工作表中的创建的图表导出为独立的图片文件,然后再用LoadPicture函数加载。

将excel工作表中的创建的图表导出为独立的图片文件,需要用到Chart对象的Export方法。

如下图所示,以下vba代码将基于第一个工作表的a1:b4单元格区域创建的柱形图加载到Image1图像控件中:

Sub QQ1722187970()
    Dim oChart As Chart
    Dim oWK As Worksheet
    Dim oChartObject As ChartObject
    Set oWK = Excel.Worksheets(1)
    Set oChartObject = oWK.ChartObjects.Add(100, 0, 500, 300)
    Set oChart = oChartObject.Chart
    '基于工作表的A1:B4单元格创建柱形图
    With oChart
        .ChartWizard Source:=oWK.Range("a1:b4"), gallery:=xlColumnClustered, PlotBy:=xlColumns, HasLegend:=False, _
        Title:="Average Age By Year"
        .SeriesCollection("Year").Delete
        With .SeriesCollection(1)
            .XValues = oWK.Range("a2:a4")
        End With
        '导出图表
        sExportFileName = Excel.ThisWorkbook.Path & "\Average Age By Year.jpg"
        MsgBox .Export(sExportFileName)
    End With
    '加载图表
    frm1.Image1.Picture = LoadPicture(sExportFileName)
    '删除创建的图表
    oWK.Shapes(1).Delete
End Sub

 

 

 

 

       

发表评论