Last active
June 5, 2024 14:56
-
-
Save IvanildoBarauna/4cb062167160f50d4564b1de07700a5d to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from oletools.olevba import VBA_Parser | |
import os | |
import datetime | |
# Script para Extração de Código VBA | |
# | |
# Este script utiliza a biblioteca oletools para extrair código VBA de arquivos | |
# e salvá-lo em arquivos separados. A função principal `extract_full_code` percorre | |
# uma lista de arquivos .XLSM na pasta 'source_files/' e verifica se eles contêm macros VBA. | |
# Caso contenham, todas as macros são extraídas e salvas em uma pasta chamada 'new_files/' | |
# com o mesmo nome do arquivo original. | |
# | |
# Detalhes da Função: | |
# - A função itera sobre os arquivos listados na variável 'files'. | |
# - Se um arquivo contiver macros VBA, as macros são extraídas e salvas em arquivos | |
# separados dentro da pasta 'new_files/'. | |
# - A função cria um diretório correspondente ao nome do arquivo original para armazenar | |
# os códigos VBA extraídos. | |
# | |
# Observação: | |
# - Este script assume que a variável 'files' contém uma lista de nomes de arquivos .XLSM presentes | |
# no diretório 'source_files/'. | |
# - Os arquivos extraídos são salvos na pasta 'new_files/'. | |
files = os.listdir("source_files/") | |
def extract_full_code(): | |
""" | |
Extracts VBA code from files and saves them in separate files. | |
This function iterates over a list of files and checks if they contain VBA macros. | |
If a file contains VBA macros, it extracts all the macros and saves them in separate files. | |
The extracted VBA code is saved in a directory named 'new_files' with the same name as the original file. | |
Note: This function assumes that the 'files' variable is defined and contains a list of file names. | |
Returns: | |
None | |
""" | |
for file in files: | |
vba_parser = VBA_Parser("source_files/" + file) | |
if vba_parser.detect_vba_macros(): | |
for ( | |
filename, | |
stream_path, | |
vba_filename, | |
vba_code, | |
) in vba_parser.extract_all_macros(): | |
print(f"VBA Code Founded: {vba_filename}") | |
os.makedirs(f"new_files/{file.split('.')[0]}", exist_ok=True) | |
with open(f"new_files/{file.split('.')[0]}/{vba_filename}", "w") as f: | |
f.write(vba_code) | |
else: | |
print("Nenhum código VBA encontrado.") | |
extract_full_code() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment