06.07.2012, 11:58
|
Интересующийся
|
|
Регистрация: 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
|
|
06.07.2012, 12:07
|
Интересующийся
|
|
Регистрация: 06.07.2012
Сообщений: 12
|
|
Может это глупый вопрос)
Подскажите тогда где почитать про это
|
|
06.07.2012, 12:26
|
|
Профессор
|
|
Регистрация: 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 для пользователей
|
|
06.07.2012, 12:33
|
Интересующийся
|
|
Регистрация: 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
|
|
06.07.2012, 12:34
|
|
Профессор
|
|
Регистрация: 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) = "Итог:";
}
|
|
06.07.2012, 12:38
|
Интересующийся
|
|
Регистрация: 06.07.2012
Сообщений: 12
|
|
Спасибо большое!
|
|
06.07.2012, 12:41
|
Интересующийся
|
|
Регистрация: 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>
как его модернизировать?)
|
|
06.07.2012, 12:50
|
|
Профессор
|
|
Регистрация: 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-объектов не появлялось...
|
|
06.07.2012, 13:07
|
Интересующийся
|
|
Регистрация: 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 ...
|
|
06.07.2012, 13:26
|
|
Профессор
|
|
Регистрация: 03.05.2011
Сообщений: 848
|
|
Сообщение от klicken
|
Спасибо, сохранил как Вы и сказали, debugger выдает ошибку после нажатия на кнопку Excel ...
|
уберите первую точку в 18строке
в 22 строке все так и должно быть даже на VBA?
LastCell.AutoFill LastCell.Resize(, 2);
AutoFill() это метод для автоматического заполнения диапазона [ читать здесь], и в скобках перед запятой наверно тоже цифорки не хватает [ читать здесь]
LastCell.AutoFill(); LastCell.Resize(3, 2);
|
|
|
|