mirror of
https://github.com/norandom/log2ml.git
synced 2025-04-19 15:21:27 +00:00
81 lines
2.8 KiB
Python
Executable File
81 lines
2.8 KiB
Python
Executable File
import os
|
|
import sys
|
|
import time
|
|
import pyautogui
|
|
import win32gui
|
|
import win32con
|
|
|
|
def close_cmd_window():
|
|
def enum_windows_callback(hwnd, result):
|
|
window_title = win32gui.GetWindowText(hwnd).lower()
|
|
if (win32gui.IsWindowVisible(hwnd) and
|
|
'cmd.exe' in window_title and
|
|
'Anaconda' not in window_title):
|
|
win32gui.PostMessage(hwnd, win32con.WM_CLOSE, 0, 0)
|
|
|
|
win32gui.EnumWindows(enum_windows_callback, None)
|
|
|
|
def close_excel_without_saving():
|
|
pyautogui.hotkey('alt', 'f4')
|
|
time.sleep(1)
|
|
|
|
# Try to locate and click the "Don't Save" button
|
|
try:
|
|
dont_save_button = pyautogui.locateOnScreen('dont_save_button.png', confidence=0.8)
|
|
if dont_save_button:
|
|
pyautogui.click(dont_save_button)
|
|
print("Clicked 'Don't Save' button")
|
|
else:
|
|
print("Save dialogue not found, Excel may have closed without prompting")
|
|
except pyautogui.ImageNotFoundException:
|
|
print("Save dialogue not found, Excel may have closed without prompting")
|
|
|
|
def open_excel_with_macros(file_path):
|
|
# Get the directory of the current script/executable
|
|
base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
|
|
enable_button_image = os.path.join(base_path, 'enable_content.png')
|
|
|
|
# Open Excel through the OS start menu or command line
|
|
os.startfile(file_path)
|
|
time.sleep(5) # Wait for Excel to open
|
|
|
|
# Custom timeout mechanism to locate the 'Enable Content' button
|
|
timeout = 10 # 10 seconds timeout
|
|
start_time = time.time()
|
|
enable_button = None
|
|
|
|
while (time.time() - start_time) < timeout:
|
|
try:
|
|
enable_button = pyautogui.locateCenterOnScreen(enable_button_image, confidence=0.8)
|
|
if enable_button:
|
|
pyautogui.click(enable_button)
|
|
break
|
|
except pyautogui.ImageNotFoundException:
|
|
pass
|
|
time.sleep(1) # Check every 1 second
|
|
|
|
if not enable_button:
|
|
print("Enable Content button not found, continuing...")
|
|
|
|
# Wait for any macros to finish running or other processing
|
|
time.sleep(10) # Adjust time based on expected macro execution time
|
|
|
|
# Close Excel without saving
|
|
close_excel_without_saving()
|
|
|
|
# Close any cmd.exe windows that might have opened, except Anaconda prompt
|
|
close_cmd_window()
|
|
|
|
def main():
|
|
directory = r'C:\Users\student\Desktop\Corpus' # Adjust the path to your files
|
|
files = os.listdir(directory)
|
|
excel_files = [file for file in files if file.endswith(('.xlsx', '.xlsm'))]
|
|
|
|
for file in excel_files:
|
|
full_path = os.path.join(directory, file)
|
|
open_excel_with_macros(full_path)
|
|
time.sleep(5) # Adjust as needed between openings
|
|
|
|
if __name__ == '__main__':
|
|
main()
|