تحقق مما إذا كانت التوقيع الرقمي لرمز VBA صالحًا باستخدام C++

تحقق مما إذا كان التوقيع الرقمي لرمز VBA صالحًا في C++

يوضح الكود التالي استخدام هذه الخاصية باستخدام ملف إكسل النموذجي الذي يمكنك تنزيله من الرابط المقدم. يحتوي نفس ملف إكسل على توقيع صالح، ولكن عند تعديل رمز VBA الخاص به وحفظ دفتر العمل وإعادة التحقق، نلاحظ أن توقيعه أصبح غير صالح.

#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

int main()
{
    Aspose::Cells::Startup();

    // Source directory path
    U16String srcDir(u"..\\Data\\01_SourceDirectory\\");

    // Load the workbook from an existing Excel file with VBA project
    Workbook workbook(srcDir + u"sampleVBAProjectSigned.xlsm");

    // Check if the VBA Code Project is valid signed
    std::cout << "Is VBA Code Project Valid Signed: " << (workbook.GetVbaProject().IsValidSigned() ? "True" : "False") << std::endl;

    // Modify the VBA Code
    U16String code = workbook.GetVbaProject().GetModules().Get(1).GetCodes();
    code = u"Welcome to Aspose.Cells"; // Directly setting new code here
    workbook.GetVbaProject().GetModules().Get(1).SetCodes(code);

    // Save the workbook
    workbook.Save(srcDir + u"output_out.xlsm");

    // Reload the workbook
    workbook = Workbook(srcDir + u"output_out.xlsm");

    // Now the signature is invalid
    std::cout << "Is VBA Code Project Valid Signed: " << (workbook.GetVbaProject().IsValidSigned() ? "True" : "False") << std::endl;

    Aspose::Cells::Cleanup();
}