创build图表为GIF并加载到UserForm

我使用John Walkenbach代码将图表导出为GIF,然后将其加载到用户表单上。 我遇到的问题是在这里这个位Image1.Picture = LoadPicture(Fname) 。 它不是加载到用户窗体上的GIF。 它导出的图片罚款,我可以看到它在我的Excel文件相同的目录。

 Private Sub CommandButton1_Click() Call GetChart Image1.Picture = LoadPicture(Fname) MsgBox "Yep" End Sub Public Sub GetChart() Set CurrentChart = Sheets("StatsDB").ChartObjects(1).Chart Fname = ThisWorkbook.Path & "/temp.gif" CurrentChart.Export Filename:=Fname, FilterName:="GIF" End Sub 

在使用之前,您需要为Fname指定一个值。 有几种方法可以做到这一点:

1)只分配CommandButton1_Click的值

 Private Sub CommandButton1_Click() GetChart Fname = ThisWorkbook.Path & "/temp.gif" Image1.Picture = LoadPicture(Fname) MsgBox "Yep" End Sub Public Sub GetChart() Set CurrentChart = Sheets("StatsDB").ChartObjects(1).Chart Fname = ThisWorkbook.Path & "/temp.gif" CurrentChart.Export Filename:=Fname, FilterName:="GIF" End Sub 

2)将您在GetChart使用的值作为“返回”值GetChart回:

 Private Sub CommandButton1_Click() Fname = GetChart() Image1.Picture = LoadPicture(Fname) MsgBox "Yep" End Sub Public Function GetChart() As String Set CurrentChart = Sheets("StatsDB").ChartObjects(1).Chart Fname = ThisWorkbook.Path & "/temp.gif" CurrentChart.Export Filename:=Fname, FilterName:="GIF" GetChart = Fname End Sub 

3)在范围内使Fname模块级别:

 Dim Fname As String Private Sub CommandButton1_Click() GetChart Image1.Picture = LoadPicture(Fname) MsgBox "Yep" End Sub Public Sub GetChart() Set CurrentChart = Sheets("StatsDB").ChartObjects(1).Chart Fname = ThisWorkbook.Path & "/temp.gif" CurrentChart.Export Filename:=Fname, FilterName:="GIF" End Sub 

4)将两个子程序组合成一个:

 Private Sub CommandButton1_Click() Set CurrentChart = Sheets("StatsDB").ChartObjects(1).Chart Fname = ThisWorkbook.Path & "/temp.gif" CurrentChart.Export Filename:=Fname, FilterName:="GIF" Image1.Picture = LoadPicture(Fname) MsgBox "Yep" End Sub 

将会有更多的方法来做到这一点,但希望上述的一个吸引你。