Makale numarası: 237554 - Son Gözden Geçirme: 24 Mayıs 2007 Perşembe - Gözden geçirme: 5.1

PowerPoint Microsoft Foundation Classes Visual C++ 5.0 ve Visual C++ 6.0 kullanarak otomatikleştirme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Bu makalede, Microsoft PowerPoint, Visual C++ 6.0 ve Microsoft Visual C++ 5.0 Microsoft Foundation Classes (MFC) kullanarak otomatikleştirme.

Microsoft Foundation Classes PowerPoint otomatikleştirmek ve x.25 yer alan makroyu bir sunuda çalıştırmak için kullanabilirsiniz.

Daha fazla bilgi

Genellikle, bir tür kitaplığında tüm işlevleri kaydırmak için sınıf Sihirbazı kullanabilirsiniz. Ancak sınıf Sihirbazı SAFEARRAY türü olan bir bağımsız değişken gerektiren bir işlev kaydırmak açılamıyor ve aşağıdaki gibi bir ileti, üstbilgi dosyasında oluşturur.
  // method 'MyMethod' not emitted because of invalid return type or    parameter type
				
Bir bağımsız değişkeni kaplayacağından Microsoft PowerPoint, Application::Run işlevi için sınıf sarılır değil sarmalayıcı oluşturmak için sınıf Sihirbazı'nı kullandığınızda, SAFEARRAY yazın. Application::Run hala 0x7e6 DISPID ilgili olarak ile InvokeHelper işlevini kullanarak da çağırabilirsiniz. Çalıştır işlevi hakkında daha fazla bilgi için PowerPoint tür kitaplığı OLE/COM Görüntüleyicisi aracını kullanarak inceleyebilirsiniz.

PowerPoint, PowerPoint Application::Run arayın ve otomatik hale getirebilirsiniz, aşağıdaki adımları göstermek makro.

Makrolarla PowerPoint sunusu oluşturmak için adımları

  1. Microsoft PowerPoint'i başlatın ve yeni bir sunu ile üç bir boş slayt oluşturma.
  2. Visual Basic Düzenleyicisi'ni başlatmak için ALT+F11 tuşlarına basın.
  3. Ekle menüsünden modülü bir modüle yeni sunuya eklemek için tıklatın.
  4. Aşağıdaki kodu modüle ekleyin.
       Sub ChangeBackColor()  'Change backcolor of slides 1, 2 and 3
        With ActivePresentation.Slides.Range(Array(1, 2, 3))
            .FollowMasterBackground = msoFalse
            .Background.Fill.ForeColor.SchemeColor = ppAccent2
        End With
       End Sub
    
       Sub ChangeText(vArray As Variant)
        'Add a text box to each slide and use the text from the
        'array passed into this procedure
        Dim s As Slide
        For i = 1 To ActivePresentation.Slides.Count
            With ActivePresentation.Slides(i).Shapes.AddTextbox( _
                            msoTextOrientationHorizontal, 186#, 54#, 336#, 36#)
                .TextFrame.TextRange.Text = vArray(i - 1)
                .TextFrame.TextRange.Font.Size = 60
            End With
        Next
       End Sub
    						
  5. Sunuyu aşağıdaki ve sonra Kapat PowerPoint biri olarak kaydedin:
    • PowerPoint 2007'de, C:\Pres.pptm gibi bir dosya adı'nı kullanarak, sunuyu bir makro Etkin Sunusu (*.pptm) olarak kaydedin.
    • PowerPoint 2003'te ve PowerPoint'in önceki sürümleri, sunuyu bir sunu kaydedin (* .ppt) C:\Pres.ppt gibi bir dosya adı kullanarak.

MFC uygulaması oluşturma adımları

  1. AutoPPT adlı yeni bir MFC iletişim kutusunu tabanlı uygulama oluşturun.
  2. Görünüm menüsünde (veya CTRL + W tuşlarına basın), sınıf Sihirbazı'nı seçin ve sonra aşağıdaki adımları izleyin:
    1. Otomasyon sekmesini tıklatın.
    2. Add Class ' ı tıklatın ve Kimden, tür kitaplığı</a1>'ı tıklatın.
    3. PowerPoint Kitaplığı'nı bulun ve sonra da PowerPoint tür kitaplığı ekleyin:
      • PowerPoint 2007 için Msppt.olb ekleyin.
      • PowerPoint 2003'te, Msppt.olb ekleyin.
      • PowerPoint 2002 için Msppt.olb ekleyin.
      • PowerPoint 2000'de, Msppt9.olb ekleyin.
      • PowerPoint 97'in için Msppt8.olb ekleyin.
  3. Kaynak KIMLIĞI IDD_AUTOPPT_DIALOG ile iletişim kutusunu seçin. Iletişim kutusuna bir düğme ekleyin ve sonra bu düğme için işleyicisine aşağıdaki kodu ekleyin.
       _Application	oApp;
       if(!oApp.CreateDispatch("Powerpoint.Application"))
       {
            AfxMessageBox("Could not get Powerpoint application.");
            return;
       }
       oApp.SetVisible(TRUE);
    
    
       //Get the Presentations collection and open a presentation
       Presentations oPresSet(oApp.GetPresentations());
       CString strFilename;
       //For PowerPoint 2007, change the file name to "c:\\pres.pptm"
       strFilename = "c:\\pres.ppt";
       _Presentation oPres(oPresSet.Open(strFilename, // Filename
                                         true,        // Readonly
                                         false,       // Untitled
                                         true         // WithWindow
                          ));
    		
       //*************** How to Run PowerPoint Macros *********************
    
       // Run "ChangeBackColor" macro in the presentation -- note that the
       // "ChangeBackColor" macro requires no arguments
    
       {
           COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
           static BYTE parms[] = 
                VTS_BSTR  VTS_VARIANT;
           LPCTSTR lpszMacroName = "Pres.ppt!ChangeBackColor";
    
           oApp.InvokeHelper(0x7e6, DISPATCH_METHOD, VT_EMPTY, NULL,  parms,
                             lpszMacroName, //Macro Name
                             &vOpt          //No arguments, for example, ignore
                            );
       }
    			
    
       // Run "ChangeText" macro in the presentation;
       // The macro requires three arguments -- the first two are strings
       // and the last one is a long	
    		
       {
    
            COleSafeArray saArgs;  //Create a 1-dimensional array with three 
                                   //elements
    
            DWORD numElements[1];
            numElements[0]= 3;	
            saArgs.Create(VT_VARIANT, 1, numElements);	
            long index[1];
            VARIANT v;
    
            index[0]=0;		//Fill 1st element
            CString sName("ABC");
            VariantInit(&v);
            v.vt= VT_BSTR;
            v.bstrVal = sName.AllocSysString();
            saArgs.PutElement(index, &v);
            SysFreeString(v.bstrVal);
            VariantClear(&v);
    
            index[0]=1;		//Fill 2nd element
            CString sCompany("XYZ");
            VariantInit(&v);
            v.vt= VT_BSTR;
            v.bstrVal = sCompany.AllocSysString();
            saArgs.PutElement(index, &v);
            SysFreeString(v.bstrVal);
            VariantClear(&v);
    
            index[0]=2;		//Fill 3rd element
            VariantInit(&v);
            v.vt = VT_I4;
            v.lVal=123;
            saArgs.PutElement(index, &v);
            VariantClear(&v);
    
            static BYTE parms[] = 
                 VTS_BSTR  VTS_VARIANT;
            LPCTSTR lpszMacroName = "Pres.ppt!ChangeText";
            oApp.InvokeHelper(0x7e6, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
                              lpszMacroName,   //Macro Name
                              (VARIANT*)saArgs //Array of macro parameters 
                             );
    
            saArgs.Detach();
       }
    
    						
    Not PowerPoint 2002 Tür kitaplığında bir alt satıra kaydırılmış sınıflar, ekleme ek bir bağımsız değişken (false) Open yöntemi çağrısı.
  4. Deyimi eklemek için PowerPoint uygun ekleme üstbilgi dosyası.
    #include "msppt8.h" // use msppt9.h for 2000 or msppt.h for 2002, 2003, and 2007
    					
  5. Aşağıdaki kod satırını CAutoPPTApp::InitInstance() işlevinin başına ekleyin.
         AfxOleInit();
    						
  6. Derleme ve çalıştırma. Otomasyon kod çalıştırmak için iletişim kutusuna eklediğiniz düğmesini seçin. Kod tamamlandıktan sonra sunuya makro tarafından yapılan değişiklikleri inceleyebileceğiniz böylece PowerPoint görünür kalacak.

Referanslar

PowerPoint, Visual C++ kullanarak otomatikleştirme hakkında daha fazla bilgi için lütfen Microsoft Knowledge Base'de aşağıdaki makaleye bakın:
180616  (http://support.microsoft.com/kb/180616/ ) PowerPoint sunusunu göstermek için MFC nasıl kullanılır

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Foundation Class Library 4.2
Anahtar Kelimeler: 
kbmt kbexpertiseinter kbautomation kbhowto KB237554 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:237554  (http://support.microsoft.com/kb/237554/en-us/ )