Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - [решено] Редактирование Excel , командная строка CMD + VBS

Ответить
Настройки темы
Разное - [решено] Редактирование Excel , командная строка CMD + VBS

Аватара для DEDI

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


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


Конфигурация

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


Изменения
Автор: DEDI
Дата: 15-07-2014
Нужна помощь, не пойму в чем дело. Нужно редактировать таблицу Excel из под командной строки. По моему все легко но хоть убей не могу разобраться со vbs скриптом!.

Нашел скрипт, когда стал подгонять его под себя начались проблемы, полный ппц.

Из командной строки это выглядит примерно так: edit_xls.vbs Excel.xlsx 1 2 3 "X date"
edit_xls.vbs - скрипт
Excel.xlsx - таблица
1 и 2 - координаты ячейки
3 - номер листа ( вот на номере листа он у меня и ошибку кидает)
"X date" - значение

Скрипт (Который мучаю):
читать дальше »
Код: Выделить весь код
xlsFileName = WScript.Arguments.Item(0)
xlsx = WScript.Arguments.Item(1)
xlsy = WScript.Arguments.Item(2)
xlssheets = WScript.Arguments.Item(3)
xlsvalue = WScript.Arguments.Item(4)
set fso = createobject("Scripting.FileSystemObject")
set a = createobject("excel.application")
set b = a.workbooks.open(xlsFileName)
WScript.Echo "Num " & xlssheets & ""
set s = b.sheets ("" & xlssheets & "")
s.Cells(""&xlsx&"", ""&xlsy&"").Value = ""&xlsvalue&""
b.save
b.close true
a.quit


Оригинал: (cyberforum, пользователь Abu)
читать дальше »
Код: Выделить весь код
const xlsFileName = "c:\forTest\book and vbs.xls" ' тута имя xls файла
set fso = createobject("Scripting.FileSystemObject")
set a = createobject("excel.application")
set b = a.workbooks.open(xlsFileName) 'открываем книгу
set s = b.sheets(1) 'номер листа в книге
for i = 1 to 10 'заполним первые десять строк первого столбца 
    s.Cells(i,1).Value = i*1000
Next
b.close true 'закроем книгу, сохранив изменения
a.quit 'закроем Excel


Конкретного шаблона таблицы нет.

Думал подогнать вордовский скрипт (который мне идеально подходит) под ексель, но ни в какукую.

Скрипт: (Спасибо Iska)
читать дальше »
Код: Выделить весь код
Option Explicit

Const wdReplaceAll = 2

Dim strDocument
Dim strACT
Dim strClient
Dim strService
Dim strDate
Dim strMobileTel
Dim strSN
Dim strNOTE

Dim objFSO

Dim arrStrings


If WScript.Arguments.Count = 8 Then
	strDocument      = WScript.Arguments.Item(0)
	strDate          = WScript.Arguments.Item(1)
	strACT           = WScript.Arguments.Item(2)
	strClient        = WScript.Arguments.Item(3)
	strMobileTel     = WScript.Arguments.Item(4)
	strService       = WScript.Arguments.Item(5)
	strSN            = WScript.Arguments.Item(6)
	strNOTE          = WScript.Arguments.Item(7)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FileExists(strDocument) Then
		With WScript.CreateObject("Word.Application")
			With .Documents.Open(strDocument)
				For Each arrStrings In Array( _
						Array("Дата",                 strDate), _
						Array("Номер акта",           strACT), _
						Array("Клиент",               strClient), _
						Array("Номер телефона",       strMobileTel), _
						Array("Оборудование\\Сервис", strService), _
						Array("Серийный номер",       strSN), _
						Array("Заметка",              strNOTE) _
					)
					
					With .Content.Find
						.ClearFormatting
						.Text = "(" & arrStrings(0) & ": )(*)(^13)"
						
						.MatchWildcards = True
						.Format         = False
						.MatchCase      = True
						
						With .Replacement
							.ClearFormatting
							.Text = "\1" & arrStrings(1) & "\3"
						End With
						
						.Execute , , , , , , , , , , wdReplaceAll
					End With
				Next
				
				.Save
				.Close
			End With
			
			.Quit
		End With
	Else
		WScript.Echo "Can't find document [" & strDocument & "]."
	End If
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Document> <Date> <Number ACT> <Client> <Telephone number> <Service> <Serial number> <Note>"
End If

WScript.Quit 0


За ранее огромное спасибо!

Отправлено: 00:31, 15-07-2014

 

Ветеран


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

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


Цитата DEDI:
Из командной строки это выглядит примерно так: edit_xls.vbs Excel.xlsx 1 2 3 "X date"

3 - номер листа ( вот на номере листа он у меня и ошибку кидает) »
Какую именно ошибку? Где приложенный образец файла «Excel.xlsx»?

Если именно номер листа, а не имя — тогда никак не:
Код: Выделить весь код
set s = b.sheets ("" & xlssheets & "")
а:
Код: Выделить весь код
set s = b.sheets(xlssheets)
можете даже уточнить как:
Код: Выделить весь код
set s = b.sheets(CLng(xlssheets))
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:33, 15-07-2014 | #2



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

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


Аватара для DEDI

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


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

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


Iska, Спасибо!!!

Вот скрипт: (Рабочий )
читать дальше »
Код: Выделить весь код
Dim xlsFileName
Dim xlsx
Dim xlsy
Dim xlssheets
Dim xlsvalue

xlsFileName = WScript.Arguments.Item(0)
xlsx = WScript.Arguments.Item(1)
xlsy = WScript.Arguments.Item(2)
xlssheets = WScript.Arguments.Item(3)
xlsvalue = WScript.Arguments.Item(4)
set fso = createobject("Scripting.FileSystemObject")
set co = createobject("excel.application")
set b = co.workbooks.open(xlsFileName)
set s = b.sheets(CLng(xlssheets))
s.Cells(CLng(xlsx),CLng(xlsy)).Value = xlsvalue
b.save
b.close true
co.quit


Но может будут еще варианты интересные?)

Последний раз редактировалось DEDI, 20-07-2014 в 22:17.


Отправлено: 19:33, 15-07-2014 | #3


Ветеран


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

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


Цитата DEDI:
Но может будут еще варианты интересные?) »
Держите «интересный вариант» — то же самое, но с проверками:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim objFSO

Dim strSourceFile
Dim intWorksheetNumber
Dim intRowNumber
Dim intColumnNumber
Dim strNewValue


If WScript.Arguments.Count = 5 Then
	strSourceFile = WScript.Arguments.Item(0)
	
	Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
	
	If objFSO.FileExists(strSourceFile) Then
		Select Case LCase(objFSO.GetExtensionName(strSourceFile))
			Case "xls", "xlsx"
				If IsNumeric(WScript.Arguments.Item(1)) Then
					intWorksheetNumber = CInt(WScript.Arguments.Item(1))
					
					If IsNumeric(WScript.Arguments.Item(2)) Then
						intRowNumber = CInt(WScript.Arguments.Item(2))
						
						If IsNumeric(WScript.Arguments.Item(3)) Then
							intColumnNumber = CInt(WScript.Arguments.Item(3))
							
							strNewValue = WScript.Arguments.Item(4)
							
							With WScript.CreateObject("Excel.Application")
								With .Workbooks.Open(strSourceFile)
									If .Worksheets.Count >= intWorksheetNumber Then
										.Worksheets.Item(intWorksheetNumber).Cells.Item(intRowNumber, intColumnNumber).Value = strNewValue
									Else
										WScript.Echo "Worksheet number [" & WScript.Arguments.Item(1) & "] greater then worksheets count in workbook."
										.Close
										.Application.Quit
										WScript.Quit 7
									End If
									
									.Save
									.Close
								End With
								
								.Quit
							End With
						Else
							WScript.Echo "Column number [" & WScript.Arguments.Item(3) & "] is not a numeric value."
							WScript.Quit 6
						End If
					Else
						WScript.Echo "Row number [" & WScript.Arguments.Item(2) & "] is not a numeric value."
						WScript.Quit 5
					End If
				Else
					WScript.Echo "Worksheet number [" & WScript.Arguments.Item(1) & "] is not a numeric value."
					WScript.Quit 4
				End If
			Case Else
				WScript.Echo "Source file [" & strSourceFile & "] probably is not an Excel document."
				WScript.Quit 3
		End Select
	Else
		WScript.Echo "Source file [" & strSourceFile & "] not found."
		WScript.Quit 2
	End If
	
	Set objFSO = Nothing
Else
	WScript.Echo "Usage: cscript.exe //nologo " & WScript.ScriptName & " <Source file> <Worksheet number> <Row number> <Column number> <New cell's value>"
	WScript.Quit 1
End If

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

Отправлено: 07:15, 17-07-2014 | #4



Компьютерный форум OSzone.net » Сфера Microsoft » Microsoft Office (Word, Excel, Outlook и т.д.) » Разное - [решено] Редактирование Excel , командная строка CMD + VBS

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - CMD-командная строка вопрос? generation Хочу все знать 4 12-11-2011 20:04
Разное - [решено] Командная строка CMD алфавит глючит BillGates_XP Microsoft Windows 7 4 14-04-2011 12:37
Службы - Командная строка Farru Microsoft Windows Vista 1 03-04-2008 20:34
Командная строка Surround Хочу все знать 1 07-08-2004 18:58
Командная строка Apis.NET Хочу все знать 5 04-03-2002 19:04




 
Переход