Как предотвратить печать файла Excel пользователями с помощью C++

Возможные сценарии использования

В нашей ежедневной работе в файле Excel может содержаться важная информация; чтобы защитить внутренние данные от распространения, компания не разрешит их печать. Этот документ расскажет, как предотвратить печать файлов Excel другими.

Как предотвратить пользователей от печати файла в MS-Excel

Вы можете применить следующий VBA-код для защиты вашего конкретного файла от печати.

  1. Откройте свою книгу, которую вы не разрешаете печатать.
  2. Выберите вкладку “Developer” на ленте Excel и нажмите кнопку “View Code” в разделе “Controls”. Или удерживайте клавиши ALT + F11 для открытия окна Microsoft Visual Basic for Applications.


  3. Затем в левом окне Project Explorer дважды щелкните ThisWorkbook, чтобы открыть модуль, и добавьте некоторые VBA-коды.


  4. Затем сохраните и закройте этот код, вернитесь в рабочую книгу, и теперь при попытке распечатать файл образца выводится предупреждение:


Как запретить пользователям печатать файл Excel с помощью Aspose.Cells for C++

Следующий пример кода показывает, как предотвратить печать файла Excel:

  1. Загрузите образец файла.
  2. Получите объект VbaModuleCollection через свойство VbaProject книги.
  3. Получите объект VbaModule через имя “ThisWorkbook”.
  4. Установите свойство codes объекта VbaModule.
  5. Сохраните образец файла в формате xlsm.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;

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

    // Create workbook from existing Excel file
    Workbook workbook(u"Sample.xlsx");

    // Access VBA project modules
    VbaModuleCollection modules = workbook.GetVbaProject().GetModules();

    // Set VBA code for 'ThisWorkbook' module
    modules.Get(u"ThisWorkbook").SetCodes(u"Private Sub Workbook_BeforePrint(Cancel As Boolean)\r\n  Cancel = True\r\n  MsgBox \"Refusing to print in paperless office\"\r\nEnd Sub\r\n");

    // Save the workbook as macro-enabled Excel file
    workbook.Save(u"out.xlsm");

    std::cout << "VBA code added and workbook saved successfully!" << std::endl;

    Aspose::Cells::Cleanup();
}