Недавно наш ИТ-отдел применил политику, согласно которой мы должны указывать метку конфиденциальности в Excel.
Это привело к сбою в работе моих автоматических кодов py для создания персонализированных файлов Excel.
Помимо использования Excelwriter для записи в файл, я также использую win32com для защиты отдельных файлов случайным паролем. Всякий раз, когда win32com открывает файл, ему предлагается выбрать метку конфиденциальности, которую он не может обойти и, следовательно, не может продолжить.
Есть ли способ программно выбрать по умолчанию «конфиденциально» в качестве метка конфиденциальности?
далее кратко описано, как я генерирую файлы
while rc < idcount:
var_id= df['idnum'].iloc[rc]
var_password = df['password'].iloc[rc]
main_df = df[(df['idnum'] == var_id)]
wsname = 'testsheet'
staff_file = pd.ExcelWriter(dummyloc + 'Dummy.xlsx', engine='xlsxwriter')
main_df.to_excel(staff_file,wsname,startrow=4,index=False)
workbook = staff_file.book
workbook.set_vba_name('ThisWorkbook')
workbook.add_vba_project(dummyloc + './vbaProject.bin') #i added a macro for some internal controls.
staff_file.save()
staff_file.close()
excel = Dispatch('Excel.Application')
wb = excel.Workbooks.Open(dummyloc + 'Dummy.xlsx')
excel.Worksheets[wsname].Activate()
excel.ActiveSheet.Protect('ABCD',True ,True ,True ,False ,False , False , False , False , False , False , False ,False , True , True , False)
wb.SaveAs(Filename = dummyloc + 'Excel\\' + 'Dummy1',FileFormat= 52,Password=str(var_password))
wb.Close()
rc = rc+ 1
Я также нашел предложенное решение, но каким-то образом.
Предполагается, что для ввода пароля необходимо выполнить макрос vba. Однако, возможно, я закодировал его неправильно, это ничего не изменило
def set_password(excel_file_path, pw):
from pathlib import Path
excel_file_path = Path(excel_file_path)
vbs_script = \
f"""' Save with password required upon opening
Set excel_object = CreateObject("Excel.Application")
Set workbook = excel_object.Workbooks.Open("{excel_file_path}")
excel_object.DisplayAlerts = False
excel_object.Visible = False
workbook.SaveAs "{excel_file_path}",, "{pw}"
excel_object.Application.Quit
"""
# write
vbs_script_path = excel_file_path.parent.joinpath("set_pw.vbs")
with open(vbs_script_path, "w") as file:
file.write(vbs_script)
#execute
subprocess.call(['cscript.exe', str(vbs_script_path)])
# remove
vbs_script_path.unlink()
return None
Подробнее здесь: https://stackoverflow.com/questions/696 ... ing-python
Как программно установить метки чувствительности Excel с помощью Python? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как программно установить метки чувствительности Excel с помощью C#, microsoft.interop.excel?
Anonymous » » в форуме C# - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Установка метки чувствительности для Excel с использованием Win32com (Python)
Anonymous » » в форуме Python - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-