Используйте Microsoft.ACE.OLEDB.12.0 для установки имени листа - PullRequest
0 голосов
/ 27 декабря 2018

Работает следующее:

cnStg = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & oFile.Path & "; Extended Properties='Excel 12.0 Xml;HDR=YES';"
cn.Open cnStg 
Set adoWbkAsDatabase = CreateObject("ADOX.Catalog")
adoWbkAsDatabase.ActiveConnection = cn

For i = 0 To adoWbkAsDatabase.Tables.Count
    If Mid(adoWbkAsDatabase.Tables(i).Name, 2, 10) = "XXXXXX XXX" Then
        vSheetName = Split(Trim(Mid(adoWbkAsDatabase.Tables(i).Name, 12, 100)), "$")(0)

, но следующее:

Set adoWbkAsDatabase.Tables(i).Name = "XXXXXX XXX"

дает

Ошибка времени выполнения Microsoft VBScript: Требуется объект: 'adoWbkAsDatabase.Таблицы (...). Name'`

Я понимаю, что мой подход не должен работать, но есть ли способ изменить имя рабочего листа, используя Provider=Microsoft.ACE.OLEDB.12.0'?

1 Ответ

0 голосов
/ 28 декабря 2018

Насколько мне известно, переименование листов Excel через интерфейс базы данных OLE невозможно.Для этого вам понадобится COM-объект Excel (т.е. работающая установка Excel на компьютер, на котором выполняется скрипт):

Set xl = CreateObject("Excel.Application")
Set wb = xl.Workbooks.Open(oFile.Path)

wb.Sheets(1).Name = "XXXXXX XXX"

wb.Save
wb.Close
xl.Quit
...