2012-07-17 17 views
5

Slide.Shapes.AddChart() स्वचालित रूप से एक्सेल खोलता है। यहां तक ​​कि अगर मैं जल्दी से Chart.ChartData.Workbook.Application.Visible = false करता हूं, तो यह अभी भी थोड़ी देर दिखाता है। यह स्वचालित चार्ट निर्माण त्रुटि-प्रवण बनाता है क्योंकि उपयोगकर्ता को पॉप-अप रखने वाले एक्सेल अनुप्रयोगों को स्पर्श न करने का प्रयास करना पड़ता है।चार्ट बनाने के दौरान Excel को खोलने के लिए PowerPoint को बताने का कोई तरीका नहीं है?

WithWindow = false के साथ प्रस्तुति खोलना अभी भी नए चार्ट बनाते समय एक्सेल खोल देगा।

उत्तर

8

यह व्यवहार "डिज़ाइन द्वारा" है और माइक्रोसॉफ्ट को बदलने में कोई दिलचस्पी नहीं है। यूआई कार्य करने का यही तरीका है।

आप Excel में चार्ट बनाने के लिए क्या कर सकते हैं (या तो इंटरऑप या ओपनएक्सएमएल का उपयोग करके), फिर उस फ़ाइल को PowerPoint में आयात करें (डालें)।

चेक से MSDN

+0

मैंने इसका परीक्षण नहीं किया है, लेकिन यह स्लाइड से अलग कैसे है। AddChart? क्या यह एक्सेल वर्कबुक स्वचालित रूप से नहीं खोलता है? – simendsjo

+0

@simendsjo कोड में चार्ट बनाने के लिए आवश्यक डेटा भी है। तो यह पॉपअप एक्सेल नहीं हो सकता है। मैं कोड से ऊपर नहीं आ सकता क्योंकि मैं शायद ही कभी विंडोज का उपयोग करता हूं। – 465544

+0

यह वही है जो मैं कर रहा हूं (आकार। एडचर्ट), इसलिए कोड – simendsjo

1

यहां एक संभावित काम है।

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

फिर आप s.OLEFormat.Object के माध्यम से जोड़े गए चार्ट में हेरफेर करेंगे। मैंने केवल थोड़ा प्रयोग किया है, लेकिन यह बाहरी एक्सेल एप्लिकेशन नहीं खोलता है और जब तक मैंने ऑब्जेक्ट को सक्रिय नहीं किया तब तक मुझे कोई चरम झटका नहीं दिखाई देता। एक व्यापार बंद यह है कि कम से कम Powerpoint 2010 में, आपको सभी सुविधाओं का उपयोग करने के लिए इसे परिवर्तित करने की आवश्यकता है। यदि यह काम नहीं करता है तो आप हमेशा web components.

संपादित करें: मुझे समझ में नहीं आता कि यह विधि किसी समस्या का कारण क्यों बनती है, लेकिन यहां सहायता करने की कोशिश करने के लिए थोड़ा और कोड है जो वास्तव में वस्तु को जोड़ता है। यह कार्यपुस्तिकाओं आदि के बजाय वस्तुओं के साथ लिखा गया था, ताकि कोई संदर्भ बनाने की आवश्यकता न हो। यह केवल उपयोगकर्ता को उनकी मशीन पर एक्सेल की मांग करता है।

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 
+0

मैं PowerPoint में चार्ट उपस्थित भी के लिए डेटा चाहते हैं। ऐसा लगता है कि मुझे इसका उपयोग करने के लिए एक्सेल वर्कबुक को एम्बेड या लिंक करना होगा, जो दुर्भाग्यवश मेरे उपयोग-मामले के लिए शायद भी बदतर है। – simendsjo

+0

डेटा Excel के शीट 1 में है। चार्ट ऑब्जेक्ट, जिसे आप कोड के माध्यम से संशोधित कर सकते हैं। मेरा संपादित उत्तर देखें। –

+0

धन्यवाद, लेकिन यह अभी भी "काम करता है"। ग्राफ़ को वास्तविक चार्ट की बजाय चित्र के रूप में जोड़ा जाता है। पावरपॉइंट चार्ट को हेरफेर नहीं कर सकता क्योंकि इसे PowerPoint के माध्यम से जोड़ा गया था। आप जोड़े जाने के बाद चार्ट टेम्पलेट को लागू नहीं कर सकते (या आप कर सकते हैं, यह कुछ भी नहीं करता है)। यह एक चार्ट प्लेसहोल्डर, इत्यादि आदि में जोड़ा नहीं गया है ... – simendsjo

0

इस लिंक मैं एक methdology सुझाव है पर एक ही आते हैं।

  1. powerpoint VBA में refrences "माइक्रोसॉफ्ट एक्सेल 12.0 ऑब्जेक्ट लायब्रेरी"

  2. है कि के लिए एक्सेल की इस कार्रवाई को कोई भी ऑपरेशन से पहले yuser प्रपत्र पॉपअप के माध्यम से खुला होना चाहिए उपयोगकर्ता सुनिश्चित जोड़ें।

  3. VBA में एक एक्सेल बना सकते हैं और निम्नलिखित कोड

  4. में अपनी पैरामीटर सेट powerpoint चार्ट जोड़ें, excet एक्सेल टैब उपयोगकर्ता चार्ट जोड़ने पर अंतर्निहित एक्सेल शीट के उद्घाटन के देखने के लिए सक्षम नहीं होगा जिसे कोड के माध्यम से नियंत्रित किया जा सकता है।

नमूना कोड:

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