Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.07.2012, 11:58
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

макрос для Excel в javascript
Подскажите пожалуйста как лучше переделать этот макрос на javascript

Sub test()
With Application
.UseSystemSeparators = True
End With
Dim LastCell As Range: Set LastCell = Range("B65536").End(xlUp).Offset(1)
LastCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)"
LastCell.AutoFill LastCell.Resize(, 2)
LastCell.EntireRow.Cells(1) = "Итог:"

End Sub
Ответить с цитированием
  #2 (permalink)  
Старый 06.07.2012, 12:07
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

Может это глупый вопрос)
Подскажите тогда где почитать про это
Ответить с цитированием
  #3 (permalink)  
Старый 06.07.2012, 12:26
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от klicken Посмотреть сообщение
Подскажите пожалуйста как лучше переделать этот макрос на javascript

Sub test()
With Application
.UseSystemSeparators = True
End With
Dim LastCell As Range: Set LastCell = Range("B65536").End(xlUp).Offset(1)
LastCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)"
LastCell.AutoFill LastCell.Resize(, 2)
LastCell.EntireRow.Cells(1) = "Итог:"

End Sub
не на javascript, а на JScript)
а что он делает то?)
много чего есть в книге VBA и программирование в MS Office для пользователей
Ответить с цитированием
  #4 (permalink)  
Старый 06.07.2012, 12:33
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

Sub test()
With Application
.UseSystemSeparators = True //устанавливает системный разделитель, чтобы у всех пользователей была "." между целой и дробной части в числах
End With
Dim LastCell As Range: Set LastCell = Range("B65536").End(xlUp).Offset(1)
LastCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)"
LastCell.AutoFill LastCell.Resize(, 2)
LastCell.EntireRow.Cells(1) = "Итог:"
// находит последнее число в столбце, и в пустую ячейку записывает сумму столбца
End Sub
Ответить с цитированием
  #5 (permalink)  
Старый 06.07.2012, 12:34
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от klicken Посмотреть сообщение
Подскажите пожалуйста как лучше переделать этот макрос на javascript

Sub test()
With Application
.UseSystemSeparators = True
End With
Dim LastCell As Range: Set LastCell = Range("B65536").End(xlUp).Offset(1)
LastCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)"
LastCell.AutoFill LastCell.Resize(, 2)
LastCell.EntireRow.Cells(1) = "Итог:"

End Sub
function test() {
	with (Application) {
		.UseSystemSeparators = true;
	}
	var LastCell = Range("B65536").End(xlUp).Offset(1);
	LastCell.FormulaR1C1 = "=SUM(R1C:R[-1]C)";
	LastCell.AutoFill LastCell.Resize(, 2);
	LastCell.EntireRow.Cells(1) = "Итог:";
}
Ответить с цитированием
  #6 (permalink)  
Старый 06.07.2012, 12:38
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

Спасибо большое!
Ответить с цитированием
  #7 (permalink)  
Старый 06.07.2012, 12:41
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

<html>
<head>
<input type='button' value='Excel';
onClick="javascript:
var xls = new ActiveXObject ( 'Excel.Application' );
xls.visible = true;
var newBook = xls.Workbooks.Add;
newBook.Worksheets.Add;
newBook.Worksheets(1).Activate;
newBook.Worksheets(1).Cells(1,1).value='1.25, 3.82';
newBook.Worksheets(1).Cells(2,1).value='2.1, 1';
newBook.Worksheets(1).Cells(1,2).value='1, 4';
newBook.Worksheets(1).Cells(2,2).value='10 , 12';
newBook.Worksheets(1).Name='WorkSheet from Javascript';

function test() {
with (Application) {
.UseSustemSeparators = true;
}
var LastCell = Range('B65536').End(xlUp).Offset(1);
LastCell.FormulaR1C1 = '=SUM(R1C:R[-1]C)';
LastCell.AutoFill LastCell.Resize(, 2);
LastCell.EntireRow.Cells(1) = 'Итог:';
}
"

// newBook.Worksheets(1).SaveAs('C:\\temp\\TEST2.XLS' );

</head>
</html>

как его модернизировать?)
Ответить с цитированием
  #8 (permalink)  
Старый 06.07.2012, 12:50
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от klicken Посмотреть сообщение
<html>
<head>
<input type='button' value='Excel';
onClick="javascript:
var xls = new ActiveXObject ( 'Excel.Application' );
xls.visible = true;
var newBook = xls.Workbooks.Add;
newBook.Worksheets.Add;
newBook.Worksheets(1).Activate;
newBook.Worksheets(1).Cells(1,1).value='1.25, 3.82';
newBook.Worksheets(1).Cells(2,1).value='2.1, 1';
newBook.Worksheets(1).Cells(1,2).value='1, 4';
newBook.Worksheets(1).Cells(2,2).value='10 , 12';
newBook.Worksheets(1).Name='WorkSheet from Javascript';

function test() {
with (Application) {
.UseSustemSeparators = true;
}
var LastCell = Range('B65536').End(xlUp).Offset(1);
LastCell.FormulaR1C1 = '=SUM(R1C:R[-1]C)';
LastCell.AutoFill LastCell.Resize(, 2);
LastCell.EntireRow.Cells(1) = 'Итог:';
}
"

// newBook.Worksheets(1).SaveAs('C:\\temp\\TEST2.XLS' );

</head>
</html>

как его модернизировать?)
<html>
<head>
<title>Excel</title>
<script>
function test() {
	var xls = new ActiveXObject ( 'Excel.Application' );
	xls.visible = true;
	var newBook = xls.Workbooks.Add;
	newBook.Worksheets.Add;
	newBook.Worksheets(1).Activate;
	newBook.Worksheets(1).Cells(1,1).value='1.25, 3.82';
	newBook.Worksheets(1).Cells(2,1).value='2.1, 1';
	newBook.Worksheets(1).Cells(1,2).value='1, 4';
	newBook.Worksheets(1).Cells(2,2).value='10 , 12';
	newBook.Worksheets(1).Name='WorkSheet from Javascript';
	
	with (Application) {  
		.UseSustemSeparators = true;  
	}  
	var LastCell = Range('B65536').End(xlUp).Offset(1);  
	LastCell.FormulaR1C1 = '=SUM(R1C:R[-1]C)';  
	LastCell.AutoFill LastCell.Resize(, 2);  
	LastCell.EntireRow.Cells(1) = 'Итог:';  
}
</script>
</head>
<body>
<input type='button' value='Excel' onClick="test()">
</body>
</html>

и лучше все это запихнуть в HTML Application (.hta), чтобы никаких запросов на разрешение выполнения ActiveX-объектов не появлялось...
Ответить с цитированием
  #9 (permalink)  
Старый 06.07.2012, 13:07
Интересующийся
Отправить личное сообщение для klicken Посмотреть профиль Найти все сообщения от klicken
 
Регистрация: 06.07.2012
Сообщений: 12

Сообщение от lord2kim Посмотреть сообщение
<html>
<head>
<title>Excel</title>
<script>
function test() {
	var xls = new ActiveXObject ( 'Excel.Application' );
	xls.visible = true;
	var newBook = xls.Workbooks.Add;
	newBook.Worksheets.Add;
	newBook.Worksheets(1).Activate;
	newBook.Worksheets(1).Cells(1,1).value='1.25, 3.82';
	newBook.Worksheets(1).Cells(2,1).value='2.1, 1';
	newBook.Worksheets(1).Cells(1,2).value='1, 4';
	newBook.Worksheets(1).Cells(2,2).value='10 , 12';
	newBook.Worksheets(1).Name='WorkSheet from Javascript';
	
	with (Application) {  
		.UseSustemSeparators = true;  
	}  
	var LastCell = Range('B65536').End(xlUp).Offset(1);  
	LastCell.FormulaR1C1 = '=SUM(R1C:R[-1]C)';  
	LastCell.AutoFill LastCell.Resize(, 2);  
	LastCell.EntireRow.Cells(1) = 'Итог:';  
}
</script>
</head>
<body>
<input type='button' value='Excel' onClick="test()">
</body>
</html>

и лучше все это запихнуть в HTML Application (.hta), чтобы никаких запросов на разрешение выполнения ActiveX-объектов не появлялось...
Спасибо, сохранил как Вы и сказали, debugger выдает ошибку после нажатия на кнопку Excel ...
Ответить с цитированием
  #10 (permalink)  
Старый 06.07.2012, 13:26
Аватар для lord2kim
Профессор
Отправить личное сообщение для lord2kim Посмотреть профиль Найти все сообщения от lord2kim
 
Регистрация: 03.05.2011
Сообщений: 848

Сообщение от klicken Посмотреть сообщение
Спасибо, сохранил как Вы и сказали, debugger выдает ошибку после нажатия на кнопку Excel ...
уберите первую точку в 18строке
в 22 строке все так и должно быть даже на VBA?
LastCell.AutoFill LastCell.Resize(, 2);

AutoFill() это метод для автоматического заполнения диапазона [читать здесь], и в скобках перед запятой наверно тоже цифорки не хватает [читать здесь]
LastCell.AutoFill(); LastCell.Resize(3, 2);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма для поиска по странице средсвами javascript andikk Общие вопросы Javascript 12 11.04.2013 23:59
Регулярные выражения для javascript qwert_ukg Общие вопросы Javascript 3 20.04.2012 13:45
Hivext Platforma - Платформа для JavaScript приложений Ruslan Ваши сайты и скрипты 1 23.01.2010 14:33
нужна программа для этого. Чем писать? javascript или php? spam-server Серверные языки и технологии 3 27.08.2009 00:52
Возможности JavaScript для управления hardware-объектом AZbest Общие вопросы Javascript 19 28.10.2008 17:45