2012-05-09 40 views
1

我的任务是'在Excel中创建饼图,然后在matlab中显示它'。VBA + Matlab:饼图故障

,因为我觉得,我有两个烦恼:

1)这是正确的图表创建的图表? (A1-A6是名字,B1-B6是数字)。

好的,这个功能工作。

Function CreateChart() As Excel.Chart 
Dim title As String 
title = "One" 


Dim Book As Workbook 
Set Book = ThisWorkbook 

Dim new_sheet As Excel.Worksheet 
Set new_sheet = Book.Sheets(1) 

Dim new_chart As Excel.Chart 
Set new_chart = Charts.Add() 

ActiveChart.ChartType = xlPie 

ActiveChart.SetSourceData Source:=new_sheet.Range("A1:B6"), _ 
     PlotBy:=xlColumns 

ActiveChart.Location Where:=xlLocationAutomatic, Name:=title 

With ActiveChart 
    .HasTitle = True 
    .ChartTitle.Characters.Text = title 
End With 

Set CreateChart = new_chart 
End Function 

2)如何与此过程(在未来的互动 - 用matlab 功能,返回图)

,并在MATLAB得出这样的饼图?

function chart = CreateChart(DataMatrix) 

    pie = actxserver('Excel.Chart'); 
    all_pies = actxserver('Excel.Charts'); 
    pietype = actxserver('Excel.XlChartType'); 

    pie = all_pies.Add(); 

    pie.ChartType = pietype.xlPie; 

    % here is a trouble to put data from matrix 

    pie.SetSourceData Source DataMatrix    %hm.. strange 

    end 

此代码不起作用! (我不知道如何改写串

ActiveChart.SetSourceData Source:=new_sheet.Range("A1:B6"), PloBy = xlColumns

P.S:我觉得这是更好地从Excel文件加载脚本,并返回图表。

但是如何在matlab中使用这个图表? (并绘制它)

+1

永远不要说“这段代码不起作用”。相反,解释*如何*它不起作用。它实际上做了什么?你希望它会做什么,为什么?如果出现错误消息,那么整个错误消息究竟是什么意思? –

+0

你的第一段代码引用了一个叫做'new_sheet'的东西,它看起来没有被定义在任何地方。它意味着是'new_chart'还是'Sheet'或什么的? –

+0

@GarethMcCaughan。 我正确的问题。但我有一个问题,VBBA脚本:如何分配'setSourceData源'一个数组变量?可能吗? (源定义为范围) – gaussblurinc

回答

0

您可以随时使用xlsread将excel值加载到matlab中,并使用piepie3在matlab中绘制饼图。

+0

但是可以调用此vba脚本并返回饼图并绘制它? (奇怪的是,我认为matlab不能绘制馅饼:\) – gaussblurinc

+0

当然,你认为Matlab不能绘制饼图,特别是Gunther的答案告诉你要使用哪些函数。 –