Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用VBA将Powerpoint图表标签提取到Excel_Excel_Vba_Charts_Label_Powerpoint - Fatal编程技术网

使用VBA将Powerpoint图表标签提取到Excel

使用VBA将Powerpoint图表标签提取到Excel,excel,vba,charts,label,powerpoint,Excel,Vba,Charts,Label,Powerpoint,我需要找到一种方法将PowerPoint图表中的图表数据标签提取到Excel中,因为给我的PowerPoint图表的链接数据多次被破坏 我写了下面的代码,但我不知道在chtnow.SeriesCollection(1.Points… Sub Extract_Datalabels() 'Goal: To extract datalabels of Chart's series collection and write to excel Dim datapoint As Po

我需要找到一种方法将PowerPoint图表中的图表数据标签提取到Excel中,因为给我的PowerPoint图表的链接数据多次被破坏

我写了下面的代码,但我不知道在chtnow.SeriesCollection(1.Points…

Sub Extract_Datalabels()
'Goal: To extract datalabels of Chart's series collection and write to excel        
    Dim datapoint As Point
    Dim sh As Shape
    Dim sld As Slide
    Dim chtnow As Chart
    Dim label As DataLabel
    Dim xlApp As New Excel.Application
    Dim xlWorkbook As Excel.Workbook
    Dim xlworksheet As Excel.Worksheet

    Set xlWorkbook = xlApp.Workbooks.Add
    Set xlworksheet = xlWorksheets.Add
    xlApp.Visible = True

    Set chtnow = ActiveWindow.Selection.ShapeRange(1).Chart
    For Each datapoint In chtnow.SeriesCollection(1).Points
    'Extract data labels
        If datapoint.HasDataLabel Then

            [No clue how to write to Excel]

        End If
    Next
End Sub

如果代码的其他功能正常,这是一种在excel中写入
xl工作表
第一列的简单方法:

Dim cnt As Long
If datapoint.HasDataLabel Then
    cnt = cnt + 1
    xlworksheet.Cells(cnt, 1) = datapoint.label
End If

但是,我不确定设置
xlApp.Visible=True
后是否允许您执行类似的操作
Set-chtnow=ActiveWindow.Selection.shaperage(1).Chart

您的示例中有几个类型错误,但这应该可以帮您完成任务。要使用
Excel
对象类型和所有衍生工具,您需要添加对
Microsoft Excel[a Number]对象库的引用

所有测试均使用条形图进行

Sub-Extract_Datalabels()
''目标:提取图表系列集合的数据标签并写入excel
将数据点变暗为图表点
现在是图表
Dim xlApp作为新的Excel.Application
将工作簿设置为Excel.工作簿
将工作表设置为Excel。工作表
暗排一样长
设xlApp.wWorkbook=1
设置xlWorkbook=xlApp.Workbooks.Add
设置xlworksheet=xl工作簿。工作表(1)
设xlApp.Visible=True
调用VBA.DoEvents
设置chtnow=ActiveWindow.Selection.shaperage(1.Chart)
设Row=1
对于chtnow.SeriesCollection(1.Points)中的每个数据点
'提取数据标签
如果datapoint.HasDataLabel,则
设xlsheet.Cells(行,1)=datapoint.DataLabel.Text
如果结束
设行=行+1
下一个
端接头

这算不上什么例子,但已经有问题了。代码应该在发布之前进行测试。(请参阅)另外,在[每个]模块[始终]的顶部使用
Option Explicit
。这应该没有问题,因为Excel和PPT维护自己的(和单独的)窗口集合。