Переделать макрос из VB в JScript
Здравствуйте. Есть необходимость переделать макрос написанный в VB на JS потому что google exel именно его и понимает. Суть макроса это копирование\перенос строк из одного листа в другой нажатием кнопки или автоматически. Вот как этот макрос выглядит на VB(делал не сам)
Sub sborka() If MsgBox("Сборка производится на первый лист, правильно?", vbYesNo + vbDefaultButton2) = 6 Then Sheets(1).Range("a1").CurrentRegion.Clear s_ = Sheets.Count Sheets(2).Range("1:1").Copy Sheets(1).Range("a1") For i = 2 To s_ r_ = Sheets(1).Range("a" & Rows.Count).End(xlUp).Row + 1 Sheets(i).Range("a1").CurrentRegion.Offset(1).Copy Sheets(1).Range("a" & r_) Next End If End Sub(это я так понимаю кнопка....) и вот еще Sub kleine_Hexe() Dim arr, i As Long, j As Long, k As Long Application.ScreenUpdating = 0 arr = ActiveSheet.UsedRange.Value For i = 2 To UBound(arr) For j = UBound(arr, 2) To 2 Step -1 If arr(i, j) = "" Then GoTo OUT Else For k = j To 2 Step -1 If arr(i, k) = "" Then Range(Cells(i, k + 1), Cells(i, j)).Cut Destination:=Range(Cells(i, k), Cells(i, j - 1)) GoTo OUT End If Next End If Next OUT: Next Application.ScreenUpdating = 1 End Subа вот пример документа где он используется https://drive.google.com/open?id=0B1...W5Xenlkckl6Y1E Мне надо почти все тоже самое только на JS и с небольшими поправками чтобы первая колонка каждого последующего листа не будет копироваться в первый лист.Вот пример моей таблицы Заранее буду крайне благодарен за помощь. |
|
SnakeJkeeee, здравствуйте.
Посмотрите такой вариант: //1-й макрос function sborka() { var book = SpreadsheetApp.getActiveSpreadsheet(), iSheets = book.getSheets().length, lr, lc, currR; lr = book.getSheets()[0].getDataRange().getLastRow(); lc = book.getSheets()[0].getDataRange().getLastColumn(); book.getSheets()[0].getRange(2, 2, lr-1, lc-1).clearContent(); currR = 1; for (var i = 1; i < iSheets; i++){ if(book.getSheets()[i].getDataRange().getNumRows() > 1){ lr = book.getSheets()[i].getDataRange().getLastRow(); lc = book.getSheets()[i].getDataRange().getLastColumn(); book.getSheets()[i].getRange(2, 2, lr-1, lc-1).copyTo(book.getSheets()[0].getRange(currR+1, 2), {contentsOnly:true}); currR = book.getSheets()[0].getDataRange().getLastRow(); } } } //второй макрос function kleine_Hexe(){ } //Добавляем кнопку на ленту function onOpen() { var book = SpreadsheetApp.getActiveSpreadsheet(); var menuEntries = []; menuEntries.push({name: "Сборка", functionName: "sborka"}); //menuEntries.push({name: "kleine_Hexe", functionName: "kleine_Hexe"}); book.addMenu("Скрипты для сбора", menuEntries); } 2-й макрос какой-то подозрительный, не поняла, что он делает)) |
Часовой пояс GMT +3, время: 02:22. |