Digitally Sign a VBA Code Project with Certificate using JavaScript via C++
Contents
[
Hide
]
You can digitally sign your VBA code project using Aspose.Cells with its VbaProject.sign(DigitalSignature) method. Please follow these steps to check if your Excel file is digitally signed with a certificate.
- Click Visual Basic from the Developer tab to open Visual Basic for Applications IDE
- Click Tools > Digital Signatures… of Visual Basic for Applications IDE
and it will show the Digital Signature Form showing if the document is digitally signed with a certificate or not.
Digitally Sign a VBA Code Project with Certificate in JavaScript
The following sample code illustrates how to make use of VbaProject.sign(DigitalSignature) method. Here are the input and output files of the sample code. You can use any Excel file and any certificate to test this code.
- Source Excel file used in the sample code.
- Sample pfx file to create Digital Signature. Please install it on your computer to run this code. Its password is 1234.
- Output Excel file generated by the sample code.
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example</title>
</head>
<body>
<h1>Sign VBA Project with Digital Signature</h1>
<div>
<label for="fileInput">Select Excel Workbook (.xlsm): </label>
<input type="file" id="fileInput" accept=".xlsm,.xls,.xlsx" />
</div>
<div>
<label for="pfxInput">Select PFX Certificate (.pfx): </label>
<input type="file" id="pfxInput" accept=".pfx" />
</div>
<button id="runExample">Sign VBA Project</button>
<a id="downloadLink" style="display: none;">Download Result</a>
<div id="result"></div>
</body>
<script src="aspose.cells.js.min.js"></script>
<script type="text/javascript">
const { Workbook, SaveFormat, DigitalSignature } = AsposeCells;
AsposeCells.onReady({
license: "/lic/aspose.cells.enc",
fontPath: "/fonts/",
fontList: [
"arial.ttf",
"NotoSansSC-Regular.ttf"
]
}).then(() => {
console.log("Aspose.Cells initialized");
});
document.getElementById('runExample').addEventListener('click', async () => {
const fileInput = document.getElementById('fileInput');
const pfxInput = document.getElementById('pfxInput');
const resultDiv = document.getElementById('result');
if (!fileInput.files.length || !pfxInput.files.length) {
resultDiv.innerHTML = '<p style="color: red;">Please select both the Excel workbook and the PFX certificate files.</p>';
return;
}
const workbookFile = fileInput.files[0];
const pfxFile = pfxInput.files[0];
// Read files as ArrayBuffer
const [wbArrayBuffer, pfxArrayBuffer] = await Promise.all([
workbookFile.arrayBuffer(),
pfxFile.arrayBuffer()
]);
// Prepare bytes
const wbBytes = new Uint8Array(wbArrayBuffer);
const pfxBytes = new Uint8Array(pfxArrayBuffer);
// Set Digital Signature parameters
const password = "1234";
const comment = "Signing Digital Signature using Aspose.Cells";
const digitalSignature = new DigitalSignature(pfxBytes, password, comment, new Date());
// Create workbook object from excel file
const workbook = new Workbook(wbBytes);
// Sign VBA Code Project with Digital Signature
workbook.vbaProject.sign(digitalSignature);
// Save the workbook as XLSM
const outputData = workbook.save(SaveFormat.Xlsm);
const blob = new Blob([outputData]);
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = 'outputDigitallySignVbaProjectWithCertificate.xlsm';
downloadLink.style.display = 'block';
downloadLink.textContent = 'Download Signed Workbook';
resultDiv.innerHTML = '<p style="color: green;">Workbook signed successfully! Click the download link to download the signed workbook.</p>';
});
</script>
</html>