Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - из bat файла записать дату в ячейку файла xlsx

Ответить
Настройки темы
CMD/BAT - из bat файла записать дату в ячейку файла xlsx

Аватара для DUNAEV78

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar пример.rar
(11.1 Kb, 11 просмотров)
Ребята здравствуйте! сам не знаю как написать прошу у вас помощи как из bat файла, записать дату в ячейку, файла xlsx - который имеет "имя" книги и "дату" актуальную, пример приложил
Заранее спасибо!

Отправлено: 11:47, 19-12-2019

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6705
Благодарности: 1576

Профиль | Отправить PM | Цитировать


Из бат-файла - никак. VBS или Powershell.

Надо сформировать excel-файл с датой или записать значение в ячейку уже готового файла?

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:05, 19-12-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить 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
Благодарности: 8088

Профиль | Отправить 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


Аватара для DUNAEV78

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


DJ Mogarych, файл уже существует такой как в примере

Отправлено: 12:48, 20-12-2019 | #5


Аватара для DUNAEV78

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, все хорошо Только вот дата может быть другой и каждый раз менять дату, НО дата она всегда актуальная т.е. дата автоматически уже измененная на актуальную, по видимому строку, потребуется видоизменить:
Цитата:
FName = "Z:\Box_In\Дунаев_Д.П._ОТЧЕТ 19.12.2019.xlsx"
megaloman, все хорошо Только вот дата может быть другой и каждый раз менять дату, НО дата она всегда актуальная т.е. дата автоматически уже измененная на актуальную, по видимому строку, потребуется видоизменить:
Цитата:
FName = "Z:\Box_In\Дунаев_Д.П._ОТЧЕТ 19.12.2019.xlsx"
Iska, запускаю - сообщение - и ни чего не происходит

Отправлено: 13:03, 20-12-2019 | #6


Аватара для DUNAEV78

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg 001.jpg
(14.1 Kb, 10 просмотров)

Iska, запускаю - сообщение - и ни чего не происходит

Отправлено: 13:12, 20-12-2019 | #7


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить 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
Формат даты в имени ДД.ММ.ГГГГ, то есть, например: 01.09.2025

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 13:45, 20-12-2019 | #8


Аватара для DUNAEV78

Новый участник


Сообщения: 33
Благодарности: 0

Профиль | Отправить PM | Цитировать


megaloman, получилось спасибо!, А по поводу пути можно прописать не сам путь а там где и лежит сам файл , просто пути меняются каждый раз

Отправлено: 13:57, 20-12-2019 | #9


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: rar Ваш_пример.rar
(12.3 Kb, 8 просмотров)

DUNAEV78, Если не писать словами Декабря, то можно обойтись без скрипта, при условии что у файла называние в формате
"Что угодно ДД.ММ.ГГГГ.xlsx"
Дата возьмется из названия.
Пишем в нужной ячейке формулу:
Код: Выделить весь код
="Отчет за "&ПСТР(ЯЧЕЙКА("имяфайла");ПОИСК(".xlsx";ЯЧЕЙКА("имяфайла"))-10;10)&" г."
Разве что при первом вызове таблицы понадобится нажать F9 чтобы дата пересчиталась.
Ваш пример прикрепил
Наверное можно извратиться и написать буквами, но лень.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 20-12-2019 в 14:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:50, 20-12-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - из bat файла записать дату в ячейку файла xlsx

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход