Präsentation über VBA

Der Aspose.Slides.Vba Namespace enthält Klassen und Schnittstellen für die Arbeit mit Makros und VBA-Code.

VBA-Makros hinzufügen

Aspose.Slides stellt die VbaProject Klasse zur Verfügung, um Ihnen zu ermöglichen, VBA-Projekte (und Projektverweise) zu erstellen und vorhandene Module zu bearbeiten. Sie können die IVbaProject Schnittstelle verwenden, um VBA, das in einer Präsentation eingebettet ist, zu verwalten.

  1. Erstellen Sie eine Instanz der Presentation Klasse.
  2. Verwenden Sie den VbaProject Konstruktor, um ein neues VBA-Projekt hinzuzufügen.
  3. Fügen Sie dem VbaProject ein Modul hinzu.
  4. Setzen Sie den Quellcode des Moduls.
  5. Fügen Sie Verweise auf  hinzu.
  6. Fügen Sie Verweise auf Microsoft Office hinzu.
  7. Verknüpfen Sie die Verweise mit dem VBA-Projekt.
  8. Speichern Sie die Präsentation.

Dieser C#-Code zeigt, wie Sie ein VBA-Makro von Grund auf zu einer Präsentation hinzufügen:

    // Erstellt eine Instanz der Präsentationsklasse
using (Presentation presentation = new Presentation())
{
    // Erstellt ein neues VBA-Projekt
    presentation.VbaProject = new VbaProject();

    // Fügt dem VBA-Projekt ein leeres Modul hinzu
    IVbaModule module = presentation.VbaProject.Modules.AddEmptyModule("Modul");
  
    // Setzt den Quellcode des Moduls
    module.SourceCode = @"Sub Test(oShape As Shape) MsgBox ""Test"" End Sub";

    // Erstellt einen Verweis auf <stdole>
    VbaReferenceOleTypeLib stdoleReference =
        new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");

    // Erstellt einen Verweis auf Office
    VbaReferenceOleTypeLib officeReference =
        new VbaReferenceOleTypeLib("Office", "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");

    // Fügt Verweise zum VBA-Projekt hinzu
    presentation.VbaProject.References.Add(stdoleReference);
    presentation.VbaProject.References.Add(officeReference);

            
    // Speichert die Präsentation
    presentation.Save(dataDir + "AddVBAMacros_out.pptm", SaveFormat.Pptm);
}

VBA-Makros entfernen

Mit der VbaProject Eigenschaft der Presentation Klasse können Sie ein VBA-Makro entfernen.

  1. Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation, die das Makro enthält.
  2. Greifen Sie auf das Makromodul zu und entfernen Sie es.
  3. Speichern Sie die modifizierte Präsentation.

Dieser C#-Code zeigt, wie Sie ein VBA-Makro entfernen:

    // Lädt die Präsentation, die das Makro enthält
using (Presentation presentation = new Presentation(dataDir + "VBA.pptm"))
{
    // Greift auf das Vba-Modul zu und entfernt es
    presentation.VbaProject.Modules.Remove(presentation.VbaProject.Modules[0]);

    // Speichert die Präsentation
    presentation.Save(dataDir + "RemovedVBAMacros_out.pptm", SaveFormat.Pptm);
}

VBA-Makros extrahieren

  1. Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation, die das Makro enthält.
  2. Überprüfen Sie, ob die Präsentation ein VBA-Projekt enthält.
  3. Schleifen Sie durch alle Module, die im VBA-Projekt enthalten sind, um die Makros anzuzeigen.

Dieser C#-Code zeigt, wie Sie VBA-Makros aus einer Präsentation mit Makros extrahieren:

    // Lädt die Präsentation, die das Makro enthält
using (Presentation pres = new Presentation("VBA.pptm"))
{
	if (pres.VbaProject != null) // Überprüft, ob die Präsentation ein VBA-Projekt enthält
	{
		foreach (IVbaModule module in pres.VbaProject.Modules)
		{
			Console.WriteLine(module.Name);
			Console.WriteLine(module.SourceCode);
		}
	}
}

Überprüfen, ob ein VBA-Projekt passwortgeschützt ist

Mit der IVbaProject.IsPasswordProtected Eigenschaft können Sie überprüfen, ob die Projekteigenschaften passwortgeschützt sind.

  1. Erstellen Sie eine Instanz der Presentation Klasse und laden Sie die Präsentation, die das Makro enthält.
  2. Überprüfen Sie, ob die Präsentation ein VBA-Projekt enthält.
  3. Überprüfen Sie, ob das VBA-Projekt durch ein Passwort geschützt ist, um die Projekteigenschaften anzuzeigen.

Dieser C#-Code demonstriert die Operation:

using (Presentation pres = new Presentation("VBA.pptm"))
{
    if (pres.VbaProject == null) // Überprüft, ob die Präsentation ein VBA-Projekt enthält
        return;

    if (pres.VbaProject.IsPasswordProtected)
    {
        Console.WriteLine("Das VBA-Projekt '" + pres.VbaProject.Name +
                            "' ist durch ein Passwort geschützt, um die Projekteigenschaften anzuzeigen.");
    }
}