Как обойти ошибку конфликта имён при открытии файла с помощью xlwings?

Есть задача: при копировании файла в бэкап удалять оттуда связи с внешними источниками(ссылками). Имеется следующий код:

from datetime import datetime, timedelta
import shutil
import xlwings as xw
from xlwings import Book

backup_dir = './backup/'
files = [...]  # список путей к файлам для бэкапа

now = (datetime.now() + timedelta(days=1)).strftime('%Y-%m-%d ')


for file in files:
    backup_path = backup_dir + now + file.split('/')[-1]
    shutil.copy(file, backup_path)

with xw.App(visible=True, add_book=False) as app:

    app.display_alerts = False
    app.screen_updating = False

    wb: Book = app.books.open(  # вот тут возникает ошибка
        backup_path,
        read_only=True
    )
    # этот код не выполняется пока не разрешить конфликт имен
    links = wb.api.LinkSources()
    if links:
        for link in links:
            print(f"Удаляю внешнюю ссылку: {link}")
            wb.api.BreakLink(Name=link, Type=1)

    wb.save()
    wb.close()

введите сюда описание изображения

Пробовал указать различные параметры при открытии, но ошибка всё равно возникает? Как этого избежать?

upd. Помогло один раз выполнить скрипт VBA в файле

Sub DelNames()
    Dim ws As Worksheet
    Dim nm As Name
    
    For Each ws In ThisWorkbook.Sheets
        On Error Resume Next
        ws.Names("_FilterDatabase").Delete
        On Error GoTo 0
    Next ws

    For Each nm In ThisWorkbook.Names
        If nm.Name = "_FilterDatabase" Then
            nm.Delete
        End If
    Next nm
    
    MsgBox "Удалено!", vbInformation
End Sub

После чего конфликта имён не происходило. Буду признателен, если кто-нибудь скажет что это за _FilterDatabase и на что он может повлиять (я последствий не нашел)


Ответы (0 шт):