Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 在Excel中打开电源点图表数据_Vba_Excel_Charts_Powerpoint - Fatal编程技术网

Vba 在Excel中打开电源点图表数据

Vba 在Excel中打开电源点图表数据,vba,excel,charts,powerpoint,Vba,Excel,Charts,Powerpoint,我正在尝试创建一个宏来清理power point中图表后面的Excel表,以便只有图表中使用的数据存在,而没有公式 我把它拼凑起来,当我在Excel中打开图表数据时,它会起作用,但我希望我可以创建一个宏,循环遍历工作簿中的每个图表,并在Excel中为我打开图表数据,这样我就可以对每个图表执行以下操作 Sub ChartCleaningPP() 'Paste values of table Range("Table1[#All]").Select Selection.Copy

我正在尝试创建一个宏来清理power point中图表后面的Excel表,以便只有图表中使用的数据存在,而没有公式

我把它拼凑起来,当我在Excel中打开图表数据时,它会起作用,但我希望我可以创建一个宏,循环遍历工作簿中的每个图表,并在Excel中为我打开图表数据,这样我就可以对每个图表执行以下操作

Sub ChartCleaningPP()

'Paste values of table

    Range("Table1[#All]").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Dim Cell As Range

'clear other cells

For Each Cell In ActiveSheet.UsedRange
If Intersect(Cell, Selection) Is Nothing Then
Cell.Clear
End If
Next Cell

'remove hidden

For lp = 256 To 1 Step -1
If Columns(lp).EntireColumn.Hidden = True Then Columns(lp).EntireColumn.Delete Else
Next
For lp = 65536 To 1 Step -1
If Rows(lp).EntireRow.Hidden = True Then Rows(lp).EntireRow.Delete Else
Next

'close window

ActiveWindow.Close

End Sub
试试这个:

Sub ChangeCharts()
Dim ws As Worksheet
Dim myChart As ChartObject

   For Each ws In ThisWorkbook.Worksheets
      For Each myChart In ws.ChartObjects
        'your code here
        'i.e Call ChartCleaningPP
        Next myChart
    Next ws
End Sub
编辑:(从PP运行Excel Makro) 需要在PP中激活MS Excel库

Sub RunExcelMakro()
Dim wk As Object
Dim Path As String
CreateObject ("Excel.Application")
Set xlApp = New Excel.Application
xlApp.Visible = True

Path = "C:\Users\User\Desktop\F\1.xlsm" 'Edit Path
Set wk = xlApp.Workbooks.Open(Path)

xlApp.Run "YourMakro"

xlApp.Quit
End Sub
编辑:


谢谢,但这没用。我想它可以在Excel表格中工作,但我需要它来制作PowerPoint。在我的代码开始工作之前,需要打开PowerPoint图表后面的Excel工作表。请立即尝试。这是您现在想要的吗?如果右键单击PowerPoint图表,您可以选择“编辑数据”>“在excel中编辑数据”,这将打开我需要打开的excel文件。我不知道这些文件的路径。我想要的是一个宏,它可以在PowerPoint中打开每个图表,在100个图表后面打开100张Excel表格,这样我就可以在每个图表上运行代码。请尝试编辑,如果它有效,图表是链接的Excel对象,否则它们只是普通图表(是的,它们可以有一张Excel表格来显示这些数据,但这不一样)据我所知,用vba是没有办法的。你可以打开一个,看看它们是否在同一个文件夹中,然后你可以循环使用它们。
Sub M1()
    Dim sld As Slide
    Dim sh As Shape
    Dim Path As String

    Dim xlApp As Object
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True

    For Each sld In ActivePresentation.Slides
        For Each sh In sld.Shapes
            If sh.Type = msoLinkedOLEObject Then
                With sh.LinkFormat
                    Path = .SourceFullName
                    xlApp.Workbooks.Open Path

                End With
            End If
        Next sh
    Next sld
End Sub