Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Переделать макрос из VB в JScript (https://javascript.ru/forum/misc/67692-peredelat-makros-iz-vb-v-jscript.html)

SnakeJkeeee 03.03.2017 03:51

Переделать макрос из 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 и с небольшими поправками чтобы первая колонка каждого последующего листа не будет копироваться в первый лист.Вот пример моей таблицы
Заранее буду крайне благодарен за помощь.

nerv_ 03.03.2017 21:44

http://javascript.ru/forum/misc/6759...vod-na-js.html

Manyasha 04.03.2017 22:25

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.