![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - из bat файла записать дату в ячейку файла xlsx |
|
|
CMD/BAT - из bat файла записать дату в ячейку файла xlsx
|
![]() Новый участник Сообщения: 33 |
Ребята здравствуйте! сам не знаю как написать прошу у вас помощи как из bat файла, записать дату в ячейку, файла xlsx - который имеет "имя" книги и "дату" актуальную, пример приложил
Заранее спасибо! |
|
Отправлено: 11:47, 19-12-2019 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Из бат-файла - никак. VBS или Powershell.
Надо сформировать excel-файл с датой или записать значение в ячейку уже готового файла? |
------- Отправлено: 13:05, 19-12-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать FName = "Z:\Box_In\Дунаев_Д.П._ОТЧЕТ 19.12.2019.xlsx" ToCell = "B1" Dt = CStr(MonthName(Month(Date))) Dt = "Отчет за " + Right("0" + CStr(Day(Date)), 2) + " " + Left(Dt, Len(Dt) - 1) + "я " + CStr(Year(Date)) + " г." With CreateObject("Excel.Application") .Visible = True .Workbooks.Open FName .Range(ToCell) = Dt .ActiveWorkbook.Save .ActiveWorkbook.Close .Quit End With |
------- Отправлено: 22:46, 19-12-2019 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать DUNAEV78, как-то так, если я всё правильно понял:
Скрытый текст
Option Explicit Dim strSourceFile Dim objFSO Dim objExcel Dim strWorksheetName Dim strPartsDelimiter Dim boolFound Dim objWorksheet Dim arrParts strWorksheetName = "ОТЧЕТ" strPartsDelimiter = "_ОТЧЕТ " If WScript.Arguments.Count = 1 Then Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") strSourceFile = objFSO.GetAbsolutePathName(WScript.Arguments.Item(0)) If objFSO.FileExists(strSourceFile) Then Select Case LCase(objFSO.GetExtensionName(strSourceFile)) Case "xls", "xlsx" Set objExcel = WScript.CreateObject("Excel.Application") With objExcel.Workbooks.Open(strSourceFile) boolFound = False For Each objWorksheet In .WorkSheets If StrComp(objWorksheet.Name, strWorksheetName, vbTextCompare) = 0 Then boolFound = True arrParts = Split(objFSO.GetBaseName(strSourceFile), strPartsDelimiter) If IsArray(arrParts) And UBound(arrParts) = 1 Then objWorksheet.Cells.Item(3, 2).Value = Replace(arrParts(0), "_", " ") WScript.Echo objWorksheet.Cells.Item(3, 2).Value If IsDate(arrParts(1)) Then objWorksheet.Cells.Item(1, 2).Value = "Отчет за " & FormatDateTime(CDate(arrParts(1)), vbLongDate) WScript.Echo objWorksheet.Cells.Item(1, 2).Value Else WScript.Echo "Can't translate part [" & arrParts(1) & "] of file name [" & objFSO.GetBaseName(strSourceFile) & "] as date." End If Else WScript.Echo "Can't parse file name [" & objFSO.GetBaseName(strSourceFile) & "] by delimiter [" & strPartsDelimiter & "]." End If Exit For End If Next If boolFound Then .Save Else WScript.Echo "Can't find worksheet [" & strWorksheetName & "] in [" & strSourceFile & "]." End If End With objExcel.Quit Set objExcel = Nothing Case Else ' Nothing to do End Select Else WScript.Echo "Can't find source file [" & strSourceFile & "]." WScript.Quit 2 End If Set objFSO = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file>" WScript.Quit 1 End If WScript.Quit 0 |
Отправлено: 00:09, 20-12-2019 | #4 |
![]() Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать DJ Mogarych, файл уже существует такой как в примере
|
|
Отправлено: 12:48, 20-12-2019 | #5 |
![]() Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать megaloman, все хорошо Только вот дата может быть другой и каждый раз менять дату, НО дата она всегда актуальная т.е. дата автоматически уже измененная на актуальную, по видимому строку, потребуется видоизменить:
Цитата:
Цитата:
|
||
Отправлено: 13:03, 20-12-2019 | #6 |
![]() Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать Iska, запускаю - сообщение - и ни чего не происходит
|
Отправлено: 13:12, 20-12-2019 | #7 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать DUNAEV78, Объясните:
Имеется файл, например "Дунаев_Д.П._ОТЧЕТ ДД.ММ.ГГГГ.xlsx" То есть, его создавать не нужно, сегодня существует файл "Дунаев_Д.П._ОТЧЕТ 20.12.2019.xlsx" и туда надо вбить в шапку дату. Вы хотите чтобы скрипт обращался к файлу с датой в имени. FName = "Z:\Box_In\Дунаев_Д.П._ОТЧЕТ ДД.ММ.ГГГГ.xlsx" ToCell = "B1" FName = Replace(FName, "ДД.ММ.ГГГГ", Right("0" + CStr(Day(Date)), 2) + "." + Right("0" + CStr(Month(Date)), 2) + "." + CStr(Year(Date))) Dt = CStr(MonthName(Month(Date))) Dt = "Отчет за " + Right("0" + CStr(Day(Date)), 2) + " " + Left(Dt, Len(Dt) - 1) + "я " + CStr(Year(Date)) + " г." With CreateObject("Excel.Application") .Visible = True .Workbooks.Open FName .Range(ToCell) = Dt .ActiveWorkbook.Save .ActiveWorkbook.Close .Quit End With |
------- Отправлено: 13:45, 20-12-2019 | #8 |
![]() Новый участник Сообщения: 33
|
Профиль | Отправить PM | Цитировать megaloman, получилось спасибо!, А по поводу пути можно прописать не сам путь а там где и лежит сам файл , просто пути меняются каждый раз
|
Отправлено: 13:57, 20-12-2019 | #9 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать DUNAEV78, Если не писать словами Декабря, то можно обойтись без скрипта, при условии что у файла называние в формате
"Что угодно ДД.ММ.ГГГГ.xlsx" Дата возьмется из названия. Пишем в нужной ячейке формулу: Разве что при первом вызове таблицы понадобится нажать F9 чтобы дата пересчиталась. Ваш пример прикрепил Наверное можно извратиться и написать буквами, но лень. |
------- Последний раз редактировалось megaloman, 20-12-2019 в 14:58. Отправлено: 14:50, 20-12-2019 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Создание .bat файла для выборки строк из .csv файла в .xlsx | GODolubOFF | Скриптовые языки администрирования Windows | 10 | 14-12-2015 15:34 | |
CMD/BAT - Написание Bat файла - из одного файла вытаскивать определенную информацию в файл форм | Ойка | Скриптовые языки администрирования Windows | 2 | 30-01-2014 23:59 | |
CMD/BAT - Запуск BAT файла с правами локального пользователя из сетевого BAT файла | Yurii_L | Скриптовые языки администрирования Windows | 9 | 05-09-2012 14:27 | |
[решено] Вытащить ячейку из Excel файла и вставить в TXT файл | garanov | AutoIt | 2 | 23-05-2012 14:16 |
|