Gérer les codes VBA du classeur Excel activé par macro
Ajouter un module VBA en JavaScript via C++
Le code d’exemple suivant crée un nouveau classeur et ajoute un nouveau module VBA ainsi qu’un code macro, puis enregistre le résultat au format XLSM. Une fois que vous ouvrez le fichier XLSM dans Microsoft Excel et que vous cliquez sur les commandes du menu Developer > Visual Basic, vous verrez un module nommé “TestModule” et à l’intérieur, vous verrez le code macro suivant.
Sub ShowMessage() {
MsgBox "Welcome to Aspose!"
}
<!DOCTYPE html>
<html>
<head>
<title>Aspose.Cells Example - Add VBA Module</title>
</head>
<body>
<h1>Add VBA Module Example</h1>
<input type="file" id="fileInput" accept=".xls,.xlsx,.xlsm,.csv" />
<button id="runExample">Run Example</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 } = 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 () => {
// Create new workbook
const workbook = new Workbook();
// Access first worksheet
const worksheet = workbook.worksheets.get(0);
// Add VBA Module
const idx = workbook.vbaProject.modules.add(worksheet);
// Access the VBA Module, set its name and codes
const module = workbook.vbaProject.modules.get(idx);
module.name = "TestModule";
module.codes = "Sub ShowMessage()\r\n" +
" MsgBox \"Welcome to Aspose!\"\r\n" +
"End Sub";
// Save the workbook as XLSM and prepare download
const outputData = workbook.save(SaveFormat.Xlsm);
const blob = new Blob([outputData], { type: "application/vnd.ms-excel.sheet.macroEnabled.12" });
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = 'output_out.xlsm';
downloadLink.style.display = 'block';
downloadLink.textContent = 'Download Excel File';
document.getElementById('result').innerHTML = '<p style="color: green;">VBA module added successfully! Click the download link to get the modified file.</p>';
});
</script>
</html>
Modifier VBA ou Macro en JavaScript via C++
Vous pouvez modifier le code VBA ou Macro en utilisant Aspose.Cells for JavaScript via C++. Aspose.Cells a ajouté les modules et classes suivants pour lire et modifier le projet VBA dans le fichier Excel.
- Aspose.Cells.Vba
- VbaProject
- VbaModuleCollection
- VbaModule
Cet article vous montrera comment modifier le code VBA ou Macro à l’intérieur du fichier Excel source en utilisant Aspose.Cells.
Le code d’exemple suivant charge le fichier Excel source qui contient le code VBA ou Macro suivant.
Sub Button1_Click() {
MsgBox "This is test message."
}
Après l’exécution du code d’exemple Aspose.Cells, le code VBA ou Macro sera modifié comme ceci
Sub Button1_Click() {
MsgBox "This is Aspose.Cells message."
}
Vous pouvez télécharger le fichier Excel source et le fichier Excel de sortie à partir des liens donnés.
<!DOCTYPE html>
<html>
<head>
<title>Change VBA Module Code Example</title>
</head>
<body>
<h1>Change VBA Module Code Example</h1>
<input type="file" id="fileInput" accept=".xlsm,.xls,.xlsx" />
<button id="runExample">Run Example</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 } = 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 resultDiv = document.getElementById('result');
if (!fileInput.files.length) {
resultDiv.innerHTML = '<p style="color: red;">Please select an Excel file (.xlsm).</p>';
return;
}
const file = fileInput.files[0];
const arrayBuffer = await file.arrayBuffer();
const workbook = new Workbook(new Uint8Array(arrayBuffer));
// Access VBA project modules
const modules = workbook.vbaProject.modules;
const moduleCount = modules.count;
for (let i = 0; i < moduleCount; i++) {
const module = modules.get(i);
let code = module.codes;
if (code && code.includes("This is test message.")) {
code = code.replace("This is test message.", "This is Aspose.Cells message.");
module.codes = code;
}
}
const outputData = workbook.save(SaveFormat.Xlsm);
const blob = new Blob([outputData]);
const downloadLink = document.getElementById('downloadLink');
downloadLink.href = URL.createObjectURL(blob);
downloadLink.download = 'output_out.xlsm';
downloadLink.style.display = 'block';
downloadLink.textContent = 'Download Modified Excel File';
resultDiv.innerHTML = '<p style="color: green;">VBA module code updated successfully! Click the download link to get the modified file.</p>';
});
</script>
</html>
Sujets avancés
- Ajouter une référence de bibliothèque au projet VBA dans le classeur
- Attribuer une macro à un contrôle de formulaire
- Vérifier si la signature numérique du code VBA est valide
- Vérifier si le code VBA est signé
- Vérifier si le projet VBA dans un classeur est signé
- Vérifier si le projet VBA est protégé et verrouillé pour la visualisation
- Copier le stockage de concepteur de formulaire utilisateur de macro VBA du modèle vers le classeur cible
- Signer numériquement un projet de code VBA avec un certificat
- Exporter le certificat VBA vers un fichier ou un flux
- Filtrer le projet VBA lors du chargement d’un classeur
- Découvrir si le projet VBA est protégé
- Protéger par mot de passe le projet VBA du classeur Excel