7

Slide.Shapes.AddChart()Excel が自動的に開きます。すぐに実行しChart.ChartData.Workbook.Application.Visible = falseても、まだ少し時間が表示されます。これにより、ポップアップし続けるExcelアプリケーションにユーザーが触れないようにしなければならないため、チャート作成の自動化がエラーを起こしやすくなります。

でプレゼンテーションをWithWindow = false開くと、新しいグラフを作成するときに Excel が開きます。

4

3 に答える 3

8

この動作は "仕様" であり、Microsoft は変更することに関心がありません。これが UI の機能です。

Excel で (相互運用機能または OpenXML を使用して) グラフを作成し、そのファイルを PowerPoint にインポート (挿入) することができます。

MSDNからこのリンクを確認してください

于 2012-07-22T16:28:25.193 に答える
1

これが可能な回避策です。

Sub ChartExample()
Dim s As Shape
Set s = Application.Presentations(1).Slides(1).Shapes.AddOLEObject(ClassName:="Excel.Chart")
End Sub

次に、 を介して追加したグラフを操作しますs.OLEFormat.Object。少しだけ試してみましたが、外部の Excel アプリケーションは開かず、オブジェクトをアクティブにしない限り極端なちらつきは見られませんでした。ただし、少なくとも Powerpoint 2010 では、すべての機能を使用するには変換する必要があります。これが機能しない場合は、いつでもWeb コンポーネントを試すことができます。

編集: このメソッドが問題を引き起こす理由はわかりませんが、ここでさらに支援するために、実際にオブジェクトを操作することを示すコードをもう少し示します。これはワークブックなどではなくオブジェクトで記述されているため、参照を行う必要はありません。ユーザーが自分のマシンにExcelを持っていることを要求するだけです。

Option Explicit
Const xlcolumns = 2
Sub ChartExample()
Dim s As Shape
Dim wb As Object, chart As Object, data As Object
Set s = Application.Presentations(1).Slides(1).Shapes.AddOLEObject(ClassName:="Excel.Chart")
Set wb = s.OLEFormat.Object
Set chart = wb.Sheets(1)
Set data = wb.Sheets(2)
'Set the range for the chart data
chart.setsourcedata Source:=data.Range("A1:C7"), PlotBy:= _
        xlcolumns
'Update data values for the chart
data.Range("B1").Value = "Column Label 1"
data.Range("C1").Value = "Column Label 2"
data.Range("A2:C7").clearcontents
data.Range("A2").Value = "Row Label"
data.Range("B2").Value = 7
data.Range("C2").Value = 11
End Sub
于 2012-07-17T14:20:42.650 に答える
0

同じことを克服するための別の方法論を提案します。

  1. パワーポイント VBA で、「Microsoft Excel 12.0 オブジェクト ライブラリ」への参照を追加します。

  2. この操作では、操作前に yuser フォーム ポップアップを介して Excel を開いてはならないことをユーザーに確認してください。

  3. VBA で Excel を作成し、次のコードでそのパラメーターを設定します。

  4. パワーポイント チャートを追加すると、ユーザーは、コードを介して制御できる Excel タブを除いて、チャートを追加する際に基になる Excel シートを開くことができなくなります。

サンプルコード:

Option Explicit

Sub AddExcelChartSample()

    Dim xlApp As Excel.Application, xlWkbk As Excel.Workbook

    Dim pres As PowerPoint.Presentation, sld As PowerPoint.Slide, iCount As Integer, chtShape As PowerPoint.Shape

    'Open up the excel instance and set parameters


    Set xlApp = New Excel.Application
    With xlApp
        .WindowState = xlNormal
        .Top = -1000
        .Left = -1000
        .Height = 0
        .Width = 0
    End With


    Set sld = PowerPoint.ActiveWindow.View.Slide



    For iCount = 1 To 10

        Set chtShape = sld.Shapes.AddChart(xlLine)
        Set xlWkbk = chtShape.Chart.ChartData.Workbook
        With xlWkbk

            .Sheets(1).Range("A2").Value = "Test 1"
            .Sheets(1).Range("A3").Value = "Test 2"
            .Sheets(1).Range("A4").Value = "Test 3"

        End With

        chtShape.Chart.Refresh

        xlWkbk.Close False


    Next iCount


    xlApp.Quit

End Sub
于 2013-02-03T10:33:21.430 に答える