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ı
Microsoft PowerPoint'i başlatın ve yeni bir sunu ile üç bir boş slayt oluşturma.
Visual Basic Düzenleyicisi'ni başlatmak için ALT+F11 tuşlarına basın.
Ekle menüsünden modülü bir modüle yeni sunuya eklemek için tıklatın.
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
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ı
AutoPPT adlı yeni bir MFC iletişim kutusunu tabanlı uygulama oluşturun.
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:
Otomasyon sekmesini tıklatın.
Add Class ' ı tıklatın ve Kimden, tür kitaplığı</a1>'ı tıklatın.
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.
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ı.
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
Aşağıdaki kod satırını CAutoPPTApp::InitInstance() işlevinin başına ekleyin.
AfxOleInit();
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.
Ö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/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.