Страницы: 1
RSS
Переименование листа Excel при помощи VBS
 
Привет, мне необходимо сделать костылище. Мы с помощью SAS EG и встроенного в windows task scheduler по расписанию забираем Excel файлы и складываем данные в табличку SQL. Но тут столкнулись с проблемой. Лист в книге Excel переименовали, и теперь проект при каждом запуске подает с ошибкой.
Самым простым решением это изменить наименование листа в проекте SAS EG, но вроде бы такая простая манипуляция равносильна созданию нового проекта, было придумано решение, добавить в расписание task scheduler запуск файла, который будет переименовывать этот лист в нужное наименование.

Собственно сам вопрос. Кто сталкивался с переименованием листов при помощи bat файлов?
 
OFF: ватник)))
Изменено: Jack Famous - 21.07.2020 13:21:31
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
UPD работает, проблема была в кодировке
Код
'launch Excel and open file
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("c:\temp\filename.xls")
'turn off screen alerts
xlObj.Application.DisplayAlerts = False
'loop through sheets
For Each Worksheet In xlFile.Worksheets 
   'change sheet to desired worksheet name
   If Worksheet.Name = "SheetToRename" Then
      Worksheet.Name = "NewName"
   End If
   'change all sheets to desired font 
   With Worksheet.Cells.Font 
       .Name = "Verdana" 
       .Size = 12
   End With 
Next  
'save, close, then quit
xlFile.Close True
xlObj.Quit
Изменено: Finswimmer - 21.07.2020 14:12:17
 
Выбросьте строки 12-16. У меня скрипт отработал без ошибок (распаковать в C:\temp).
Владимир
 
sokol92,можете подсказать как обратиться к первому листу, чтобы не зашивать строго название листа
 
xlFile.Worksheets(1) и весь цикл For each убрать
 
Цитата
Finswimmer написал:
как обратиться к первому листу,
Sheets(1)
 
Юрий М,
Ошибка
Несоответсвие типа
Прошу обратить внимание что речь не про VBA, а про VBS
Изменено: Finswimmer - 21.07.2020 14:47:54
 
New,Супер. То что надо
Код
'launch Excel and open file
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("Путь до файла")
'выключаем уведомления
xlObj.Application.DisplayAlerts = False
'Переименовываем первый лист
xlFile.Worksheets(1).Name = "Новое имя листа" 
   
'Сохраняем, закрываем, выходим
xlFile.Close True
xlObj.Quit
Изменено: Finswimmer - 21.07.2020 14:53:13
 
А у меня почему-то при тестировании не меняется название листа из bat файла (((
Вот код BAT файла

Код
Set xlObj = CreateObject("Excel.Application")
Set xlFile = xlObj.WorkBooks.Open("D:\Excel\Test.xlsx")
xlObj.Application.DisplayAlerts = False 'turn off screen alerts
xlFile.Worksheets(1).Name = "Новое имя листа"
xlFile.Close True 'save, close, then quit
xlObj.Quit

А если тестировать макросом Excel, то имя листа меняется.


Код
Sub Макрос1()
    Set xlFile = Application.Workbooks.Open("D:\Excel\Test.xlsx")
    Application.DisplayAlerts = False
    xlFile.Worksheets(1).Name = "Новое имя листа"
    xlFile.Close True 'save, close, then quit
End Sub

Не понятно почему так ((
Изменено: New - 21.07.2020 14:55:31
 
New,Просто долго отрабатывает
 
Может хватит называть VBS (Visual Basic Script)  BATом (BATch file)
По вопросам из тем форума, личку не читаю.
 
БМВ,я планировал использовать bat файл для вызова VBS, поэтому и писал про bat
 
Цитата
Finswimmer написал: речь не про VBA, а про VBS
Но и не про bat
Предложите название темы
 
Цитата
Finswimmer написал:
bat файл для вызова VBS, поэтому и писал про bat
а чего тогда не еще более длинная цепочка из всех скриптовых? PowerShell ->BAT -> VBS?
BAT to зачем? В планировщиеке через cscript запускается прекрасно VBS.
По вопросам из тем форума, личку не читаю.
 
Заменим название: переименование листа Excel при помощи VBS

БМВ,через task scheduler что-то не запустился (добавил в существующий проект). Завис на Action Started
 
Цитата
Finswimmer написал:
Завис на Action Started
значит что-то не корректно создали.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх